我正在处理一些遗留代码,其中有一个宏返回一个逗号分隔的列表,旨在用作函数参数。虽然这很丑陋,但配置文件中包含了许多这样的列表,现在更改将会很困难。
只要是函数调用,这个方法就能正常运行。但是,在尝试使用参数调用另一个宏时,整个字符串被视为一个参数,而不是按逗号拆分为两个参数。
这个问题是否有解决方法,而不需要更改XY的定义?
#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的定义?