首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C宏:如何连接一个名称和一个数字,这是一个数学运算的结果(也是由预处理器完成的)?

C宏:如何连接一个名称和一个数字,这是一个数学运算的结果(也是由预处理器完成的)?
EN

Stack Overflow用户
提问于 2012-05-21 21:03:26
回答 3查看 931关注 0票数 0

考虑以下代码:

代码语言:javascript
运行
复制
1. #define SUFFIX 5-5
2. #define XFUNC_0( x )  (100 * x)
3. #define XFUNC_1( x )  (101 * x)
4. #define XFUNC_2( x )  (102 * x)
5. #define CATX( x, y )  x##y
6. #define CAT( x, y )   CATX( x, y )
7. #define XFUNC         CAT( XFUNC_, SUFFIX )
8. #if     XFUNC(2) == 200
...... etc
N. #endif

这段代码看起来不是很有用,这是因为它只是我真实代码的一部分,简化了。问题是:-我如何说服预处理器执行前5-5 (只是一个数学运算的例子),并将结果(在本例中为0)连接到XFUNC_?现在它不工作了,它在第8行告诉我“预处理器指令后面的意外标记-期望换行”。更新:看起来是对的,上面的代码将是结果XFUNC_5-5的简单代码替换。但在这种情况下,我有另一个问题:-是否存在像宏这样的函数,它接受表达式(参数)作为输入(参数)并输出数字;我认为可能是像向量这样的东西,其中你放入连续的数字:你放入索引(这可能是一个完整的表达式),你得到的结果是相同的,除了now不是表达式,而是“纯”数字,然后可以连接起来

EN

回答 3

Stack Overflow用户

发布于 2012-05-21 21:09:43

你不能。预处理器会在将文件传递给编译器之前进行简单的文本替换。它不会执行计算。

票数 6
EN

Stack Overflow用户

发布于 2012-05-21 22:14:29

P99为中等大小的整数实现了预处理器算法。

票数 1
EN

Stack Overflow用户

发布于 2012-05-21 21:11:34

当预处理器进行简单的文本替换时,宏将扩展为XFUNC_5-5。由于其中包含字符-,因此您将收到错误。

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

https://stackoverflow.com/questions/10685781

复制
相关文章

相似问题

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