1 /****test.cpp****/ 2 3 #include4 using namespace std; 5 extern "C" //利用C编译器的符号规则生成_value 6 { 7 int value(); 8 } 9 int main(){10 cout< <
1 /***** value.c ****/2 //因为是.c文件 所以对应于C的value()函数声明3 int value(){4 return 5;5 }
在C中调用C++函数:
1 /****invokecpp.h****/2 /*3 使用C编译符号规则4 */5 extern "C"{6 void show();7 }
1 /****invokecpp.cpp*****/ 2 #include3 #include"invokecpp.h" 4 /* 5 为了让函数void show();能够被C语言程序调用,必须用 6 extern"C" 通知编译器采用C语言的规则解析函数名,这个 7 工作可在头文件invokecpp.h中完成。 8 */ 9 void show(){10 printf("Hello");11 }
/***main.c****//* 在C语言源文件main.c中,不能直接包含invokecpp.h 因为C语言不支持extern "C"声明。在.c文件中包含了extern "C"时 会出现编译错误。所以在main.c中,应直接进行函数原型声明,这样, 编译器可在所有参与连接的目标文件中寻找名字为_show的函数调用。*/void show();int main(){ show();}