#define CONCAT(x, y) x##y int i = 5; int num5; CONCAT(num, i) = 5;宏展开变成了numi,怎么才能是宏展开为num5
时间: 2024-04-14 09:29:08 浏览: 101
typedef和#define的用法与区别
5星 · 资源好评率100%
非常抱歉之前的回答还是有误。根据你的代码和宏定义,它的确会展开为`numi`。
在宏展开时,预处理器会将`CONCAT(num, i)`替换为`numi`,因为`x`被替换为`num`,`y`被替换为`i`。然后,代码就会变成`numi = 5;`。
要想让宏展开为`num5`,你可以使用另外一个中间宏来帮助完成展开:
```cpp
#define CONCAT_HELPER(x, y) x##y
#define CONCAT(x, y) CONCAT_HELPER(x, y)
int i = 5;
int num5;
CONCAT(num, i) = 5;
```
这样,宏展开后的代码就会变成`num5 = 5;`。
再次对之前的错误解释表示歉意,并感谢你的指正。如果还有其他问题,请随时提问。
阅读全文