“新”操作符在外部“C”中工作

时间:2013-07-31 11:46:12

标签: c# c++ dll extern

我在C#项目中使用了C ++ DLL,DLL里面有一个类,它由外部函数创建和销毁,如:

 class myClass
 {
   int N;
   public:
        //some elements and some functions

        myClass(int n)
        {
            N=n;
        }
 };

 __declspec(dllexport) myClass * builderF(int n)
 {

      return new myClass(n);

 }

 __declspec(dllexport) void destroyerF(myClass * c)
 {

      delete c;

 }

这些都在extern“C”{}体内。

编译器如何让我使用C ++功能是“C”空间?它不仅适用于C代码吗?这是经过测试和运行的(我开始为C#制作一个opencl包装器)。我之前只使用纯C代码。

1 个答案:

答案 0 :(得分:9)

extern "C"不会将编译器更改为C编译器。它 只说任何函数(或函数指针)都会使用 他们界面中的C约定。所以你仍然可以 你可以在函数中用C ++做的任何事情;这是唯一的事情 就像名称修改和调用约定一样 影响。