标题基本概括了所有内容。我知道我可以使用并终止“ C”块来停止篡改(尽管我不确定是否应该将所说的块放在哪里),但是有没有办法可以在整个程序中将其禁用?如果我愿意,是否会使通过代码编译的库更易于与luajit的FFI之类的东西一起使用?
编辑:这可能是重复项的问题特定于DLL和Visual C ++编译器。我只是问一个通用的C ++问题。
正如您已经提到过的,使用extern "C" { }
语法来包围函数声明来禁用名称修饰功能,您就不会想要为
extern "C" {
int foo(int x, int y);
void bar(const char* cstr);
}
如果确定没有使用任何c ++特定功能,则更简单的方法是使用c编译器来编译代码。例如,GCC工具链调用gcc
代替g++
。
更新:
该extern
方法的优点是您仍可以使用c ++功能进行实现(在单独的.cpp
编译单元中),这在将代码编译为纯c代码时当然是不可能的。例如
#include "MyExportAPI.h"
#include <string>
void bar(const char* cstr) {
std::string s(cstr); // <<< Note!
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句