我想缩短变量名,所以不要这样: FPData.Temps.T.Solar.Val
我想用:
TEMP_Solar.Val
并定义宏:
#define TEMP_ FPData.Temps.T.
但只有当我在其间放置空格时它才有效:
TEMP_ Solar.Val
编译好,但我想使用这个
TEMP_Solar.Val
可能?我知道我可以通过使用宏和参数“TEMP_VAL(Solar)”来解决这个问题,但是希望保持简单,线性串联......
答案 0 :(得分:3)
这是因为处理宏的预处理器只识别自己的标识符。当你使用例如TEMP_Solar
它与TEMP_
的标识符不同。
预处理器甚至可以使用简单的strcmp
来查找其宏,因此不存在子字符串,也不会出现差异。
答案 1 :(得分:1)
最明显和最简单的解决方案:
#define TEMP FPData.Temps.T
TEMP.Solar.Val
(您不能也不应该更改结构成员的实际变量名。)