0

考虑以下代码:

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。但在这种情况下,我还有另一个问题: - 确实存在一种方法来拥有像宏这样的函数或接受作为输入(参数)表达式并输出数字的东西;我认为可能类似于放置连续数字的向量:放置索引(可能是整个表达式),结果相同,

4

3 回答 3

6

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

于 2012-05-21T13:09:43.230 回答
1

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

于 2012-05-21T14:14:28.853 回答
0

XFUNC_5-5随着预处理器进行简单的文本替换,宏将被扩展。由于这包含-您收到错误的字符。

于 2012-05-21T13:11:33.737 回答