小编RNS*_*RNS的帖子

为什么在C++命名空间周围使用extern"C"

几天前,我遇到了这段C++代码,虽然我无法粘贴代码本身,但我可以用一些示例代码重新创建问题.首先,文件命名空间:

#include <iostream>
using namespace std;

namespace useless{
  class X {
     int m_myint;
     static X *m_foobar;
     X* getPrivVal(void);
  public:
     int getMember(void);
     X* getStaticVal(void);
  };
}
Run Code Online (Sandbox Code Playgroud)

接下来namespace.cpp:

#include "namespace.h"

extern "C"{
   namespace useless{
     X* X::m_foobar = NULL;
     X* X::getPrivVal(void){
         if(m_foobar == NULL)
             m_foobar = new X;
         return(m_foobar);
     }
   }
}

namespace useless {
   int X::getMember(void){
       if(m_myint == 0)
           m_myint = 1;
      return(m_myint);
   }
   X* X::getStaticVal(void){
        return(getPrivVal());
   }
}

using namespace useless;

int main(void){
    X y;
    cout << "The int …
Run Code Online (Sandbox Code Playgroud)

c c++ gcc

13
推荐指数
2
解决办法
6022
查看次数

标签 统计

c ×1

c++ ×1

gcc ×1