在c++語言中是namespace是定義命名空間,或者說是定義作用域,在c++中最常見的劃分作用域是使用{},同時C++裡有define關鍵詞,用來定義一個宏,或者說是預處理變量,那麼這種預處理變量與namespace又如何去劃分呢?示例代碼如下:
#include <iostream>
using std::endl;
using std::cout;
namespace test1
{
#define MYSIZE 1000
const int size = 10000;
int a = 10;
};
namespace test2
{
#define MYSIZE 2000
const int size = 20000;
int a = 20;
}
int a = 40;
int main()
{
int a = 30;
cout<<"test1::MYSIZE="<<MYSIZE<<endl;
cout<<"test2::MYSIZE="<<MYSIZE<<endl;
cout<<"test1::size="<<test1::size<<endl;
cout<<"test2::size="<<test2::size<<endl;
cout<<"test1::a="<<test1::a<<endl;
cout<<"test2::a="<<test2::a<<endl;
cout<<"main::a="<<a<<endl;
cout<<"global::a="<<::a<<endl;
return 0;
}該示例除了說明namespace與define的區別之外,還附帶了命名空間的作用域問題,首先需要說明的是代碼不能這樣寫:
cout<<"test1::MYSIZE="<<test1::MYSIZE<<endl; cout<<"test2::MYSIZE="<<test2::MYSIZE<<endl;編譯錯誤如下: