#include <iostream>
using namespace std;
void t(void)
{
#define a 10
}
int main()
{
cout << a<<endl;
return 0;
}
如上代码编译,打印输出结果为10。由此可见#define的作用域是文件作用域,在定义之后的位置使用都有效。改变其作用域可在后面加#undef。如下
#include <iostream>
using namespace std;
void t(void)
{
#define a 10
#undef
}
int main()
{
cout << a<<endl;
return 0;
}
编译运行报错,加#undef使其作用域变为代码块作用域.