以下是与Chatgpt的对话记录
1. extern "C"的作用是什么?
extern “C” 是一个关键字组合,用于告诉编译器按照 C 语言的约定来处理函数或变量的名称和调用方式。在 C++ 中,函数名和变量名由于支持函数重载特性而不同于 C 语言,它们被编译器进行了一定的名称修饰(Name Mangling)。因此,如果需要使用 C 语言编写的函数库,就需要使用 extern “C” 声明来显式地指定 C 语言的调用约定,以保证 C++ 能够正确地使用这些函数。
例如,在 C++ 中调用一个 C 函数:
extern "C" int add(int a, int b); // 声明
int main()
{
int sum = add(1, 2); // 调用
return 0;
}
通过 extern “C” 声明,编译器会按照 C 语言的传统方式来调用函数。这样就可以在 C++ 中使用 C 函数库,而无需考虑 C++ 名称修饰的问题。
2. 如何在.C中调用.C++的函数?
在 C 中调用 C++ 的函数时,由于 C++ 支持函数重载和命名空间(namespace)等特性,C++ 编译器会对函数名称进行修饰,导致无法直接使用 C 接口的函数。
因此,需要通过 extern “C” 关键字组合来告诉编译器按照 C 语言的方式对函数进行处理。具体地,需要在 C++ 函数的定义以及声明前添加 extern “C” 关键字组合,这样编译器就会生成不带名称修饰的符号名称。
例如,在 C++ 中定义如下的函数:
// add.h 文件
#ifndef ADD_H
#define ADD_H
#ifdef __cplusplus
extern "C"
#endif
int add(int a, int b

externC用于在C++中以C语言的方式调用函数,避免名称修饰问题。文章解释了如何在C中调用C++函数,包括处理函数重载的情况,通过特定的命名约定来区分不同的函数版本。
最低0.47元/天 解锁文章
1034

被折叠的 条评论
为什么被折叠?



