在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;編譯錯誤如下: