C语言和C++的混合编译
发布时间:2020-12-15 17:30:03 所属栏目:百科 来源:网络整理
导读:在 GCC 编译器中,可以将不同编程语言生成的目标文件混合在一起使用,但是操作起来非常的困难,因为不同的编程语言都有自己的特性。?混合使用时要处理好产生的各种问题,包括全局命名约定、命令、参数传递、数据类型转换、出错处理,以及两种语言标准运行时的
在 GCC 编译器中,可以将不同编程语言生成的目标文件混合在一起使用,但是操作起来非常的困难,因为不同的编程语言都有自己的特性。?混合使用时要处理好产生的各种问题,包括全局命名约定、命令、参数传递、数据类型转换、出错处理,以及两种语言标准运行时的库的混合。在C++中调用CC 程序和 C++ 程序可以自然的混合。C++ 可以看作是 C 语言的扩展,因此调用规则是相同的,而且数据类型也是基本相同。唯一的区别主要体现在函数名上:C语言使用的是简单的参数名,不考虑参数的个数和类型,而 C++ 中的函数总会将它的参数类型列表当作函数名的一部分。因此 C++ 程序提供一些特殊的功能可以直接声明调用 C 函数。实例如下:/*hello.c*/ #include <stdio.h> void sayhello(char *str) { printf(“hello worldn”); } /*main.cpp*/ #include <iostream> using namespace std; extern “C” void sayhello(char *str); int main(int argc,char *argv[]) { sayhello(“hello from cpp to cn”); return 0; }可以看到上述的代码中,在 C++ 程序中直接调用 C 程序中的函数,原因是在 C++ 程序中它的声明是 extern "C"。 那么如何编译文件呢?可以使用下面的命令:
g++ -c main.cpp -o main.o 如果在头文件中声明函数,就要将整个头文件都声明为extern "C",这是标准 C++ 语法,展示如下: extern “C”{ int add(int a,int b); double div(double a,double b); }; 在C中调用C++在 C 程序中调用 C++ 程序时,C++ 程序提供的函数可以使用 C 语言的调用顺序,下面的例子展示如何在 C++ 程序中创建 C 函数。/*hello.cpp*/ #include <iostream> using namespace std; extern “C” void sayhello(char *str); void sayhello(char *str) { cout<<str<<endl; } /*main.c*/ #include <stdio.h> int main(int argc,char *argv[]) { Sayhello(“hello form C to C++”); return 0; }编译使用的命令:
g++ -c hello.cpp -o hello.o (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |