匿名命名空间(转)

C++另外有一种匿名的命名空间,来保证生成的符号是局部的,这样对于匿名空间中的变量等,外部都是不可见的.
//test3.cpp

static void bar(){}

namespace //匿名的命名空间
{
    float bar2;
    int foo;
}
//test4.cpp
extern int foo;
extern void bar();
extern float bar2; 
int main()
{
bar();                    //外部的bar()被声明为static,这里连接不到符号.不能访问
bar2 = 0.1f;          //外部的匿名空间哩,这里也不能访问.
foo = 0xFF;
return 0;
};//若是将test4的目标和test3的目标进行连接,其实是找不到这些符号的.连接会失败.
匿名的命名空间是C++的特性,相对于C的static声明来讲,能够在匿名的空间里面声明不少变量和函数,这样能够省去了对每一个变量和函数添加static声明.
实质上匿名空间的功能跟static声明是同样的.

转自:http://www.javashuo.com/article/p-movrskya-db.html
相关文章
相关标签/搜索