c++——extern “C”的使用(cpp文件调用c文件)

1、extern “C” 的概念

extern “C” 是 C++ 提供的一个语法特性,用于在 C++ 代码中调用和使用 C 语言风格的函数和变量。C++ 和 C 在底层有一些不同的编译和链接约定,这会导致 C++ 编译后的函数名在链接时会带有额外的信息,与 C 代码的函数名不匹配。通过使用 extern “C”,我们可以告诉编译器按照 C 语言的约定来处理函数名和链接,从而实现 C 和 C++ 的混合编程。

2、extern “C” 的使用

①在 C++ 中调用 C 语言函数
通常情况下,C++ 中的函数名会经过一些名称修饰,以包括参数类型等信息。但如果我们要在 C++ 中调用 C 语言编写的函数,就需要确保函数名和链接方式与 C 语言兼容。

extern "C" {
    void cFunction(int a, int b);  // 在 C++ 代码中声明 C 语言风格的函数
}

int main() {
    cFunction(5, 3);  // 调用 C 语言风格的函数
    return 0;
}

②在 C++ 中使用 C 语言变量
类似地,如果我们要在 C++ 中使用 C 语言的全局变量,也需要使用 extern “C”。

extern "C" {
    int cGlobalVariable;  // 在 C++ 代码中声明 C 语言风格的全局变量
}

int main() {
    cGlobalVariable = 10;  // 使用 C 语言风格的全局变量
    return 0;
}

③在 C++ 中包含 C 语言头文件
如果你在 C++ 代码中包含了一个 C 语言风格的头文件,你需要使用 extern “C” 来保证正确的链接。

extern "C" {
    #include "c_header.h"  // 包含 C 语言风格的头文件
}

int main() {
    cFunction(5, 3);  // 调用 C 语言风格的函数
    return 0;
}

你可能感兴趣的:(c++,c++,c语言,linux)