以下は、プリプロセッサを使って数の階乗を計算するC++で書かれたプログラムである：

```
#include <iostream>

static int const FACTORIALS[13] = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 
                                    362880, 3628800, 39916800, 479001600 };
#define FACT(n)  ((n) < 0 ? 1 : (n) > 12 ? INT_MAX : FACTORIALS[n])

int main() {
  int n= 5;
  std::cout << "The factorial of " << n << " is " << FACT(n) << std::endl;
}

```

このプログラムの出力は次のようになる：

```
The factorial of 5 is 120
```

もしユーザーが12より大きな引数を渡すと、プログラムは最大の整数2147483647を出力する。別の方法として、invalid_argument例外を投げることもできる。
Here is a program written in C++ to compute the factorial of a number using the preprocessor:

```
#include <iostream>

static int const FACTORIALS[13] = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 
                                    362880, 3628800, 39916800, 479001600 };
#define FACT(n)  ((n) < 0 ? 1 : (n) > 12 ? INT_MAX : FACTORIALS[n])

int main() {
  int n= 5;
  std::cout << "The factorial of " << n << " is " << FACT(n) << std::endl;
}

```

The output of this program would be:

```
The factorial of 5 is 120
```

If the user passes an argument bigger than 12, the program will output the maximum integer 2147483647. An alternative would be to throw an invalid_argument exception.