首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ansi C预处理器:我可以将宏名和参数连接到单个变量名中吗?

Ansi C预处理器:我可以将宏名和参数连接到单个变量名中吗?
EN

Stack Overflow用户
提问于 2013-10-22 22:07:24
回答 2查看 289关注 0票数 3

我想缩短变量名,而不是这样: FPData.Temps.T.Solar.Val

我想使用:

代码语言:javascript
运行
复制
TEMP_Solar.Val

并定义宏:

代码语言:javascript
运行
复制
#define TEMP_  FPData.Temps.T.

但只有在中间留出空格,它才能起作用:

代码语言:javascript
运行
复制
TEMP_ Solar.Val     

编译正常,但我想使用这个

代码语言:javascript
运行
复制
TEMP_Solar.Val

有可能吗?我知道我可以使用宏和参数“TEMP_VAL(太阳能)”,但我想保持它的简单,线性连接…

EN

回答 2

Stack Overflow用户

发布于 2013-10-22 22:10:57

这是因为处理宏的预处理器只能识别它们自己的标识符。例如,当你使用TEMP_Solar时,它是一个与TEMP_不同的标识符。

预处理器甚至可能使用一个简单的strcmp来查找它的宏,所以不能没有子字符串,也不能有大小写差异。

票数 3
EN

Stack Overflow用户

发布于 2013-10-22 22:13:06

最明显、最简单的解决方案是:

代码语言:javascript
运行
复制
#define TEMP FPData.Temps.T

TEMP.Solar.Val

(您不能也不应该更改结构成员的实际变量名。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19520195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档