【例3.1】没有作用域的限制,只要是之前预定义过就可以
void func1()
{
#define HW "HelloWorld";
}
void func2()
{
string str = HW;
cout << str << endl;
}
【例3.2】而typedef有自己的作用域
void func1()
{
typedefunsignedint UINT;
}
void func2()
{
UINT uValue =5;//error C2065: 'UINT' : undeclared identifier
}
【例3.3】
class A
{
typedefunsignedint UINT;
UINT valueA;
A(): valueA(0){}
};
class B
{
UINT valueB;
//error C2146: syntax error : missing ';' before identifier 'valueB'
//error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
};
上面例子在B类中使用UINT会出错,因为UINT只在类A的作用域中。