0

次のコードを検討してください。

1. #define SUFFIX 5-5
2. #define XFUNC_0( x )  (100 * x)
3. #define XFUNC_1( x )  (101 * x)
4. #define XFUNC_2( x )  (102 * x)
5. #define CATX( x, y )  x##y
6. #define CAT( x, y )   CATX( x, y )
7. #define XFUNC         CAT( XFUNC_, SUFFIX )
8. #if     XFUNC(2) == 200
...... etc
N. #endif

このコードはあまり役に立たないようです。これは、単純化された実際のコードの一部にすぎないためです。問題は次のとおりです: - プリプロセッサが最初に 5-5 (数学演算の単なる例) を実行し、結果 (この例ではゼロ) を XFUNC_ に連結するようにするにはどうすればよいでしょうか? 現在は動作しないため、8 行目で「プリプロセッサ ディレクティブに続く予期しないトークン - 改行が必要です」と表示されます。しかし、この場合、私は別の質問があります。たぶん、連続した数字を入れるベクトルのようなものだと思います: インデックス (式全体である可能性があります) を入れても、同じ結果が得られます。

4

3 に答える 3

6

できません。プリプロセッサは、ファイルをコンパイラに渡す前に単純なテキスト置換を行います。計算は実行されません。

于 2012-05-21T13:09:43.230 に答える
1

P99は、適度なサイズの整数のプリプロセッサ演算を実装します。

于 2012-05-21T14:14:28.853 に答える
0

マクロはXFUNC_5-5、プリプロセッサが単純なテキスト置換を行うように展開されます。これには文字-が含まれているため、エラーが発生しています。

于 2012-05-21T13:11:33.737 に答える