extern-c相关内容

从 C++ 代码调用 C 函数

我有一个 C 函数,我想从 C++ 调用它.我不能使用 "extern "C" void foo()" 这种方法,因为 C 函数无法使用 g++ 编译.但它使用 gcc 编译得很好.任何想法如何从 C++ 调用函数? 解决方案 像这样编译 C 代码: gcc -c -o somecode.o somecode.c 然后是这样的C++代码: g++ -c -o othercode.o ..
发布时间:2021-12-03 13:18:14 服务器开发

如何从 C 调用 C++ 函数?

这个我知道. 从 C++ 调用 C 函数: 如果我的应用程序是用 C++ 编写的,而我必须从用 C 编写的库中调用函数.那么我会使用 //main.cppextern "C" void C_library_function(int x, int y);//原型C_library_function(2,4);//直接使用. 这不会破坏名称 C_library_function 并且链 ..
发布时间:2021-12-02 08:24:33 C/C++开发

结合 C++ 和 C - #ifdef __cplusplus 如何工作?

我正在处理一个包含大量遗留 C 代码的项目.我们已经开始用 C++ 编写,目的是最终也转换遗留代码.我对 C 和 C++ 如何交互有点困惑.我知道通过用 extern "C" 包装 C 代码,C++ 编译器不会破坏 C 代码的名称,但我不是完全确定如何实现这一点. 因此,在每个 C 头文件的顶部(在包含守卫之后),我们有 #ifdef __cplusplus外部“C"{#万一 在底部,我 ..
发布时间:2021-12-01 15:38:03 C/C++开发

extern“C"的作用是什么?在 C++ 中?

将 extern "C" 放入 C++ 代码中究竟有什么作用? 例如: extern "C" {无效的 foo();} 解决方案 extern "C" 使 C++ 中的函数名具有 C 链接(编译器不会破坏名称)以便客户端C 代码可以使用仅包含函数声明的 C 兼容头文件链接到(使用)您的函数.您的函数定义包含在二进制格式中(由您的 C++ 编译器编译),然后客户端 C 链接器将使用 C ..
发布时间:2021-12-01 14:42:46 C/C++开发

外部"C"编译目标代码中的函数

环境是Microsoft Visual C ++ 2015和Windows 7. 在标头中定义的inline extern "C"函数是否有特殊之处?我正在使用其中其中一个标头包含此类野兽的SDK.在我的应用程序中,我有一个单独的TU(转换单元),其唯一的工作就是包含上述标头.就这样.没什么其他的了.如果我深入研究生成的目标文件,则会看到引入了extern "C"函数.这使我产生了一些不必要 ..
发布时间:2020-07-22 21:19:44 C/C++开发

错误:外部"C"上预期的不合格ID.

我有一个cpp代码,我想在其中调用c函数. 两者都可以很好地编译为.o文件,但是当执行clang ++进行编译时,我收到以下错误: file.cpp:74:12: error: expected unqualified-id extern "C" ^ cpp文件中的代码如下: void parseExtern(QString str) { #ifdef ..
发布时间:2020-07-22 21:19:41 C/C++开发

外部"C"如何显示?在C ++中工作?

我在文件的开头看到使用C2的C ++代码,如下所示: #ifdef __cplusplus extern "C" {} #endif 这是什么意思?如何运作? 解决方案 可能不是这样,而更像是: #ifdef __cplusplus extern "C" { #endif //some includes or declarations #ifdef __cplus ..
发布时间:2020-07-22 21:19:32 C/C++开发

外部"C"如何显示?允许在C文件中使用C ++代码?

为了在C文件中使用C ++代码,我读到我们可以做extern "C" { (where the c++ code goes here)},但是当我尝试使用cout打印出某些内容时,由于它无法识别库,我一直遇到错误.我想我对extern"C"如何允许您在C中使用C ++代码感到困惑. 解决方案 反之亦然.您可以使用extern C使用C ++编译器添加要编译为C代码的代码. 除非我缺少 ..
发布时间:2020-07-22 21:19:29 C/C++开发

是否可以将C ++函数标记为Extern"C"?扔?

我有要使用extern "C"声明的C ++函数,即使它们仅在C ++代码中调用.是的,我知道这很奇怪,但是我想这样做是为了保持一致性,因为我们混合使用了C和C ++声明.我只想确保将C ++函数声明为extern "C"不会影响抛出的行为. 它看起来像这样: extern "C" void foo() {throw exception;} int bar() { try ..
发布时间:2020-07-22 21:19:27 C/C++开发

extern和extern"C"对于变量

我正在编写一个供C程序使用的C ++共享库.但是,我对extern和extern "C"有疑问. 考虑以下代码 我的头文件是这样的: #ifdef __cplusplus extern "C" int global; extern "C" int addnumbers(int a, int b); #else extern int ..
发布时间:2020-07-22 21:19:21 C/C++开发

外部"C"的作用是什么?在C ++中?

将extern "C"放入C ++代码中究竟能做什么? 例如: extern "C" { void foo(); } 解决方案 外部"C"使C ++中的函数名称具有'C'链接(编译器不会更改名称),以便客户端C代码可以链接到(即使用)您的函数,使用仅包含函数声明的"C"兼容头文件.您的函数定义包含在二进制格式(由C ++编译器编译)中,客户端'C'链接程序随后将使用'C'名 ..
发布时间:2020-07-01 04:07:31 C/C++开发

我们可以使用外部“C”在C文件没有#ifdef __cplusplus?

为需要定义为C函数的函数,为什么不应该指定 extern“C”?如果对C编译器没有影响,那么对编译器在编译C源文件时会产生什么影响? 在下面的头文件中删除 #ifdef __cplusplus 检查? extern“C”{ int MyFunc(); } 对另一个问题的回答说需要 #ifdef ,但我不明白为什么: 关于#2:将为通过C ++ ..
发布时间:2016-10-23 19:28:02 C/C++开发

静态对外部“C”/“C ++”

静态成员函数和外部“C”链接函数之间有什么区别?例如,当在C ++中使用“makecontext”时,我需要传递一个指向函数的指针。谷歌建议使用extern“C”链接,因为“makecontext”是C.但我发现使用静态工作以及。我只是幸运或... class X { public: static void proxy i){} } makecontext(...,(void(* ..
发布时间:2016-10-11 22:13:00 C/C++开发

C"&的extern之间QUOT差异;和简单的extern

我已经看到了使用的extern“C”的函数签名中声明,也同时包括C头成CPP文件C / C ++ code。 但有些功能只是他们的签名之前声明的extern(不带“C”)。 QN1: 是定义的函数,这些方法都具有同样的效果还是他们意味着不同的事情呢? 对不起,如果我很愚蠢,但我没能找到通过谷歌这种差异。 例如: 的extern INT someFunction(void *的RET_V ..
发布时间:2016-08-23 10:56:46 C/C++开发