7

gcc プリプロセッサを使用して、ほぼ同じコード宣言を 500 回書きたいと考えています。デモンストレーションの目的で、マクロを使用したいとしましょうFOR_MACRO:

#define FOR_MACRO(x) \
    #for i in {1 ... x}: \
        const int arr_len_##x[i] = {i};

呼び出しFOR_MACRO(100)は次のように変換されます。

const int arr_len_1[1] = {1};
const int arr_len_2[2] = {2};

...

const int arr_len_100[100] = {100};
4

4 に答える 4

9

これは良い考えではありません:

原則としては可能ですが、プリプロセッサを使用すると、ループを少なくとも 1 回は手動でアンロールする必要があり、ループの深さに関する任意の実装定義の制限が発生し、すべてのステートメントが 1 行で生成されます。

選択したスクリプト言語を使用してコードを生成し (おそらく別のインクルード可能なファイルに)、それをビルド プロセスに統合することをお勧めします。

于 2013-10-01T13:35:42.170 に答える
1

たとえばP99を使用して、そのようなプリプロセッサ コードの展開を行うことができます。しかし、プリプロセッサの容量が限られているため、これには制限があり、通常、その制限は をはるかに下回っています500

于 2013-10-01T15:14:59.227 に答える