为了能够正确地在C++代码中调用C语言的代码:在程序中加上extern "C"后,相当于告诉编译器这部分代码是C语言写的,因此要按照C语言进行编译,而不是C++;哪些情况下使用extern "C":(1)C++代码中调用C语言代码;(2)在C++中的头文件中使用;(3)在多个人协同开发时,可能有人擅长C语言,而有人擅长C++;...
extern "C"的作用就是修改了符号表的生成方式,将c++符号的生成方式换成了c的生成方式。 即 c库中生成的符号是c编译器的符号, 因此c语言可以直接链接。而c++程序需要使用extern "C"让编译器使用c的符号命名方式去进行链接,这样才能找到对应的符号。 2.extern "c"到底是用来c++调用c,还是c 直接说答案:都可以。
extern "C" { int add(int x, int y) { return x + y; } } 这样重新编译生成动态库,使用程序加载时就能够找到add方法并输出正确的结果。 正确输出结果 至此,我们终于理解extern "C"的含义及其使用场景之一(加载动态库)! 深度总结,无限进步!
gcc main.o sum.o // 链接 C 调用 C++ 代码 场景:你用 C++ 开发了一个库提供给其他开发人员使用,你想兼容下 C 语言,即其他用 C 语言项目可以调用你的 C++ 库。 同样简单模拟下这种情况,假设以下三个文件(sum.h、sum.cpp、main.c)在同一目录下: // file sum.h#ifndef__SUM_H__#define__SUM_H_...
1.声明全局变量:在一个文件中使用extern关键字声明一个全局变量,然后在其他文件中定义该变量。这样可以实现多个文件共享同一个全局变量。 Example: file1.c中: extern int globalVariable; //声明全局变量 file2.c中: int globalVariable = 10; //定义全局变量 2.声明全局函数:在一个文件中使用extern关键字声明...
如果extern这个关键字就这点功能,那么这个关键字就显得多余了,因为上边的程序可以通过将num变量在main函数的上边声明,使得在main函数中也可以使用。 extern这个关键字的真正的作用是引用不在同一个文件中的变量或者函数。 main.c #include<stdio.h> int main() ...
extern"C"{voidfoo();intbar();} 对我们之前的例子而言,如果我们把头文件my_handle.h的内容改成: 然后使用C++编译器重新编译my_handle_client.cpp,所生成目标文件my_handle_client.o中的符号表就变为: 从中我们可以看出,此时,用extern "C" 修饰了的声明,其生成的符号和C语言编译器生成的符号保持了一致。这...
1、定义和初始化(在一个文件中 file1.c) 实例 #include <stdio.h> // 定义并初始化外部变量 intd=3; intf=5; voidprintExternVariables(){ printf("d: %d, f: %d\n",d,f); } 2、声明并使用(在另一个文件中 file2.c) 实例 #include <stdio.h> ...
extern "C" { #endif #include <STDIO.H> #include <STDLIB.H> int sub(int a,int b); #ifdef __cplusplus } #endif #endif //cppsub.cpp #include "header.h" int sub(int a,int b) { return a-b; } /*但是如果将头文件的那一行注释掉,也会在连接时出错,因为在头文件中已经说明使用C语言...