gpt4 book ai didi

C 宏 : how do I concatenate a name and a number which is result of a math operation (done also by preprocessor)?

转载 作者:太空宇宙 更新时间:2023-11-04 05:29:45 24 4
gpt4 key购买 nike

考虑以下代码:

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(只是数学运算的一个例子)并将结果(在本例中为零)连接到 XFUNC_?现在它不起作用,它在第 8 行告诉我“预处理器指令后出现意外标记 - 需要换行符”。更新:看来是对的,上面的代码将结果XFUNC_5-5进行了简单的代码替换。但在这种情况下,我还有另一个问题:- 确实存在一种方法来拥有像宏这样的函数或接受表达式作为输入(参数)并输出数字的东西;我认为可能类似于你放置连续数字的 vector :你放置索引(它可以是一个完整的表达式)并且你得到相同的结果,除了现在不是表达式而是“纯”数字然后可以连接

最佳答案

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

关于C 宏 : how do I concatenate a name and a number which is result of a math operation (done also by preprocessor)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10685781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com