代码之家  ›  专栏  ›  技术社区  ›  yesraaj

与C++中的链接相比,C++链接中命名空间的影响是什么?

  •  1
  • yesraaj  · 技术社区  · 17 年前

    与C++中的链接相比,C++链接中命名空间的影响是什么?

    是否可以只通过使用命名空间来创建具有内部链接到外部链接的名称。与此类似,另一种方法也是如此。

    2 回复  |  直到 17 年前
        1
  •  3
  •   sharptooth    17 年前

    通常,名称空间名称在任何封闭实体的名称前面加上前缀,然后该名称被破坏并转到链接器。

    如果在不同的名称空间中有两个具有相同签名的函数,那么它们就可以链接到一个文件中。如果有两个具有相同名称的类和至少一个具有相同签名的方法,并且这些类位于不同的命名空间中,那么它们再次链接在一起就很好了。

        2
  •  1
  •   alvatar    17 年前

    C和C++都允许对象和函数具有静态文件链接,也称为内部链接。C++支持使用未命名的命名空间来代替文件范围,这是编译器的好处。静态是链接修饰符。因此,如果需要文件范围和内部链接,则应该在C++中同时使用命名空间和静态。然而,在C语言中,只需要静态关键字就可以实现相同的目的。

    /* C and C++ code */
    
    static int  bufsize = 1024;
    static int  counter = 0;
    
    static long square(long x)
    {
        return (x * x);
    }
    

    在C++中这样做的首选方法:

     // C++ code
    namespace /*unnamed*/
    {
        static int  bufsize = 1024;
        static int  counter = 0;
    
        static long square(long x)
        {
            return (x * x);
        } 
    
    }
    
    推荐文章