c++ - 使用 g++ 时使用 extern "C"{ 对 C++ 代码的影响

标签 c++ c g++ gnu

当使用 G++(例如 Linux 上的 4.5 版)时,任何人都可以解释如果用户为混合 C/C++ 系统编写头文件会发生什么,如下所示:

#ifdef __cplusplus 

extern "C" {

int myCPPfunc(some_arg_list....); /* a C++ function */

}
#endif

但这里 myCPPfunc() 是一个普通的 C++ 函数,内部有一个类 def - 即它被错误地标记为 C 函数。

这会产生什么影响?

最佳答案

这样做的主要影响是你不能重载它,例如这是合法的:

int myCPPfunc(int a);
int myCPPfunc(char a);

但这不是:

extern "C"
{
    int myCPPfunc(int a);
    int myCPPfunc(char a);
}

关于c++ - 使用 g++ 时使用 extern "C"{ 对 C++ 代码的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10197168/

相关文章:

c++ - 为什么在 C++ 中 x[y] == y[x]?

c - uint 严格为正

c++ - 测试程序中的链接错误与 RTP(实时传输协议(protocol))

c++ - 仅使用 g++ 有效,但不能使用 "g++ -c"和 ld

c++ - 重载强制转换运算符继承 (Visual C++)

c++ - 这个条件如何成立

c++ - push_backs 到 std::vector<std::reference_wrapper<type>>

c++ - 为什么函数不能在 C 中有引用参数?

c++ - 模板类、继承和成员函数指针的编译器错误

c++ - 未定义对在单独文件中定义的成员函数的引用