0

我想知道 C++ 和 C 的混合使用有多广泛。我的意思是使用 C 库/函数并在 C++ 程序中调用它,就像它是如何在这里完成的Mix C with C++一样。它在现实世界中的使用范围有多大?它是很少使用、大部分避免使用还是很常见?任何人都可以照亮它吗?

4

1 回答 1

0

这是相当普遍的。你可以

或者

  • 使用使用 C 编译器编译的目标文件、静态库和动态库,但是您应该知道 C++ 编译器会进行名称修饰而 C 编译器不会(因为 C 不允许名称重载,但 C++ 允许)。在这种情况下,有extern "C"使用 C 链接的链接器指令,即不会破坏已用 C 编译器编译的名称。

有关如何在 C++ 中使用 C 链接的良好解释,请参阅例如这里的答案:https ://stackoverflow.com/a/1041880/12118546

这就是你经常看到这样的代码的原因

#ifdef __cplusplus
extern "C" {
#endif

// all of your legacy C code here

#ifdef __cplusplus
}
#endif

示例来自:https ://stackoverflow.com/a/12994075/12118546

如果您忘记了这一点,就会导致像这样的神秘链接器错误:

...
/home/AbiSfw/ccvvuHoX.o: In function `main':
prog.cpp:(.text+0x19): undefined reference to `foo()'
...

示例来自:https ://stackoverflow.com/a/12573818/12118546

于 2021-08-19T17:18:26.667 回答