我想缩短变量名,所以不要这样: FPData.Temps.T.Solar.Val
我想使用:
TEMP_Solar.Val
并定义宏:
#define TEMP_ FPData.Temps.T.
但只有当我在两者之间放置空格时它才有效:
TEMP_ Solar.Val
编译没问题,但我想用这个
TEMP_Solar.Val
可能吗?我知道我可以通过使用宏和参数“TEMP_VAL(Solar)”来解决问题,但我想保持简单,线性连接...
最佳答案
这是因为处理宏的预处理器只识别它们自己的标识符。当你使用例如TEMP_Solar
它是与 TEMP_
不同的标识符。
预处理器甚至可能使用简单的 strcmp
来查找其宏,因此不能没有子字符串,也不能有大小写差异。
关于c - Ansi c 预处理器 : Can I concatenate macro name and argument into single variable name?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19520195/