1
マクロはプリプロセッサコマンドを呼び出すことができますか?例えば、私が何かのように、マクロはプリプロセッサコマンドを呼び出すことができますか?
#define PreProcessor(x, y) #define x ((y)+1)
マクロはプリプロセッサコマンドを呼び出すことができますか?例えば、私が何かのように、マクロはプリプロセッサコマンドを呼び出すことができますか?
#define PreProcessor(x, y) #define x ((y)+1)
を書くことができます§6.10.3.4、3のように、また、プリプロセッサディレクティブで何かにマクロを展開することはできません
:
012に似ている場合でも、前処理指令として処理されていませんその結果、完全にマクロ置き換え前処理トークン列 は、それが1 ...
しかし、条件付きマクロ自体を定義することが可能である:
#if CONDITION_A_IS_MET
#define x ((y)+1)
#else
#define x /*...some other definition*/
#endif
またはX-macroを使用します。
#define PreProcessor(x) X(x, ((x) + 1))
/*...later*/
#define X(a, b) printf("%d, %d", a, b)
PreProcessor(5) /* Outputs 5, 6 */
その機能のための一般的なケースのほとんどをカバーします。
いいえ、できません。 – Peter
同じ行に#ディレクティブを書くことはできません。 – BLUEPIXY
[Cのマクロ生成マクロ?](http://stackoverflow.com/questions/860273/macro-producing-macros-in-c) –