c – 未命名命名空间优于静态的优势?

未命名的命名空间如何优于static关键字?
你基本上是指从C标准$ 7.3.1.1 / 2节,

The use of the static keyword is
deprecated when declaring objects in a
namespace scope; the
unnamed-namespace provides a superior
alternative.

未命名的命名空间优于static关键字,主要是因为关键字static仅适用于变量声明和函数,而不适用于用户定义的类型。

以下代码在C中有效

   //legal code
   static int sample_function() { /* function body */ }
   static int sample_variable;

但是这段代码是无效的:

   //illegal code
   static class sample_class { /* class body */ };
   static struct sample_struct { /* struct body */ };

所以解决方案是,未命名命名空间,这是这个,

   //legal code
   namespace 
   {  
        class sample_class { /* class body */ };
        struct sample_struct { /* struct body */ };
   }

希望它解释为什么未命名命名空间优于静态。

另外,请注意,在命名空间范围(根据标准)中声明对象时,不建议使用static关键字。

http://stackoverflow.com/questions/4422507/superiority-of-unnamed-namespace-over-static

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 未命名命名空间优于静态的优势?