私が取り組んでいるいくつかのレガシーコードには、関数の引数として使用することを目的としたコンマ区切りのリストを返すマクロがあります。これは醜いですが、構成ファイルにはこれらの多くが含まれており、今は変更するのが難しいでしょう。
#define XY1 0,0
#define XY2 1,7
...
void fun_point(x,y);
fun_point(XY1);
呼び出されている関数である限り、これは正常に機能します。ただし、パラメータを使用して別のマクロを呼び出そうとすると、文字列全体が、コンマで2つの引数に分割されるのではなく、1つの引数と見なされます。
#define MAC_POINT(x,y) (x+y)
MAC_POINT(XY1) #not expanded by preprocessor
XY定義を変更せずにこの問題の回避策はありますか?