标题基本概括了所有内容。我知道我可以使用 extern“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++
.
UPDATE:
的优点extern
方法是你仍然可以使用 C++ 功能来实现(在单独的.cpp
编译单元),这在将代码编译为纯 C 代码时当然是不可能的。例如。
#include "MyExportAPI.h"
#include <string>
void bar(const char* cstr) {
std::string s(cstr); // <<< Note!
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)