c - Ansi c 预处理器 : Can I concatenate macro name and argument into single variable name?

标签 c macros ansi

我想缩短变量名,所以不要这样: 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/

相关文章:

C++ 在可变参数宏中使用多个参数(实现可选参数)

java - 如何使用 Java 查找文件的编码

c - 在 C11 中链接翻译单元的规则是什么?

c - 向后遍历具有随机开始和结束的数组

c - secret 服务器协议(protocol)保持软件免费

c++ - 可移植地识别非标准 C++?

c - 返回类型时不兼容的类型

选择解释器 TCL C API

用于定义带有回调的测试方法的 C 宏

C++宏展开、调试