私が取り組んでいるレガシーなコードの中には、関数の引数として使用するためのカンマ区切りのリストを返すマクロがあります。これは醜いですが、設定ファイルにはこれらの多くが含まれており、今変更するのは難しいでしょう。C++プリプロセッサでの引数の分割
#define XY1 0,0
#define XY2 1,7
...
void fun_point(x,y);
fun_point(XY1);
これは、呼び出されている関数であれば問題ありません。パラメータを持つ別のマクロを呼び出すようにしようとしたときただし、文字列全体は二つの引数
#define MAC_POINT(x,y) (x+y)
MAC_POINT(XY1) #not expanded by preprocessor
XYの定義を変更することなく、この問題の回避策はあり
にコンマ1つの引数ではなく、スプリットと考えられていますか?
/私はレガシーコード – icabod
で握手しています。GCCのマニュアルで、ディスカッションまたはこの問題が見つかりました:http://gcc.gnu.org/onlinedocs/cpp/Argument-Prescan.html#Argument-Prescan – Quantum7