次のコードを検討してください。
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 行目で「プリプロセッサ ディレクティブに続く予期しないトークン - 改行が必要です」と表示されます。しかし、この場合、私は別の質問があります。たぶん、連続した数字を入れるベクトルのようなものだと思います: インデックス (式全体である可能性があります) を入れても、同じ結果が得られます。