zoukankan      html  css  js  c++  java
  • C++匿名命名空间(转载)

    原贴请见: http://jinnsky2006.spaces.live.com/Blog/cns!27D75A3853CE1DBA!915.entry

    转载自: http://blog.csdn.net/fxpbupt/article/details/5600937

     ----------------------------------------------------------------------------------------------------

    当定义一个命名空间时,可以省略命名空间的名称:

    1 namespce {
    2     char c;
    3     int i;
    4     double d;
    5 }
    编译器会在内部为这个命名空间生成一个唯一的名字,而且还会为这个匿名的命名空间生成一条「using」指令。所以上面的代码在效果上等同于:
    1 namespace __UNIQUE_NAME_ {
    2     char c;
    3     int i;
    4     double d;
    5 }
    6 using namespace __UNIQUE_NAME_;
    在匿名命名空间中声明的名称也将被编译器转换,与编译器为这个匿名命名空间生成的唯一内部名称,即__UNIQUE_NAME_绑定在一起。还有一点很重要,就是这些名称具有internal链接属性,这和声明为static的全局名称的链接属性是相同的,即名称的作用域被限制在当前文件中,无法在另外的文件中通过使用extern声明来进行链接。如果不提倡使用全局static声明一个名称拥有internal链接属性,则匿名命名空间可以作为一种更好的达到相同效果的方法。
     
    注意:命名空间都是具有external 连接属性的,只是匿名的命名空间产生的「__UNIQUE_NAME__」在别的文件中无法得到,这个唯一的名字是不可见的.
     
    C++ 新的标准中提倡使用匿名命名空间,而不推荐使用static」,因为static用在不同的地方,涵义不同,容易造成混淆。另外,static不能修饰class。
     
  • 相关阅读:
    spring无法接收上传文件
    springcloud feign增加熔断器Hystrix
    mybatis调用存储过程(@Select方式)
    spring在注解标注的方法上加切面
    java注解Annotation
    java包装类
    JZ-C-43
    JZ-C-42-Plus
    JZ-C-42
    JZ-C-41-Plus
  • 原文地址:https://www.cnblogs.com/dpsincs/p/3276468.html
Copyright © 2011-2022 走看看