对于这个问题,我找不到合适的title,对不起;
我在博客中发现了下面的代码
#include <iostream>
#define TEN 10;
#define EIGHT TEN-2;
int main() {
int size = EIGHT;
std::cout << size;
}
Out Put: 10为什么10不是8
发布于 2015-08-11 07:39:49
宏是对预处理程序的指令,而不是C++语句。它们不需要用分号结束,它们只是在令牌上进行替换。
您的代码扩展为:
int main() {
int size = 10;-2;;
std::cout << size;
}注意,分号已被替换。简单的解决办法是更改宏:
#define TEN 10
#define EIGHT TEN-2但是,对于这样的常量,您应该使用const int而不是宏,以避免您刚才遇到的问题。
发布于 2015-08-11 07:38:18
#define中表达式的计算应该用括号来覆盖:
#定义8(10-2)因此,正如@TartanLlama所指出的,不需要任何;。这就是你的问题所在。
https://stackoverflow.com/questions/31935833
复制相似问题