C和C++混合编程中编译器(VS2008)设置
来源:互联网 发布:mysql qps 和 tps 编辑:程序博客网 时间:2024/04/29 20:28
C和C++的公共部分是完全相同的吗?在平台一致的前提下,C++编译器能够编译C的程序吗?好像是可以,但是不一定!
比如内存申请函数calloc中,使用C编译器的时候,你这样做编译通过:
int * pInt= calloc(n,sizeof(int));但如果编译器是C++的,那么以上语句就通不过编译了,必须这样才行:
int * pInt=( int *) calloc(n,sizeof(int));是的,C的设计哲学认为程序员知道自己在干什么!但C++的类型检查更为严格。也就是说有些C的工程是不能直接用C++编译器编译,所以对于一个既有C文件又有C++文件的工程,为了保证工程的顺利编译、链接,你可以把所有的C语言翻译成C++语言,这项工作的工作量不是很大,但是对于一个大项目就不好说了,主要是这种行为的level太低,不符合码农的气质。作为码农,我们必须要学会在一个工程下分别编译C和C++文件并链接之。
下面以VS2008作说明:
分别编译很简单:
选择要设置的文件:属性-->C/C++-->高级-->编译为,然后下拉菜单中选择:编译为C代码(/TC) [或者选择编译为C++代码(/TP)]。
这样就对不同语言文件分别编译。下一个工作是设置链接器的内容。不同编译器生成的目标文件中,符号表里面的符号命名准则可能会有不同,所以链接时会遇到“无法解析的外部符号”的错误。解决这个问题,使用 extern “C”,进行链接指示。
(1)对于我这个工程,我在.cpp中调用.c文件的int A(int **),此时需要这样声明:
extern “C” int A(int **)
(2)当对.C文件中的函数声明在一个.h文件中时,只需在.cpp文件中作如下引入即可:
extern “C”{ #include “hello.h”}
- C和C++混合编程中编译器(VS2008)设置
- vs2008下的C/C++混合编程
- Matlab混合编程中编译器设置问题
- ARM中C和汇编混合编程
- PICC中C和汇编混合编程
- C和C++混合编程中点点滴滴
- visual studio 2008 中c语言和c++语言混合编程设置
- C和汇编混合编程
- c和C++混合编程
- c++和c混合编程
- C和C++混合编程
- 汇编和c混合编程
- C和C++混合编程
- C和C++混合编程
- C 和 C++ 混合编程
- Matlab和C混合编程
- C和C++混合编程
- c和matlab混合编程
- Struts 源码学习之ActionServlet ( 一)
- Java netty之NioServerSocketChannel
- 高性能服务器架构
- Struts 源码学习之ActionServlet ( 二)
- 【xinfanqie】教你9大方法优化Windows系统内存
- C和C++混合编程中编译器(VS2008)设置
- android学习笔记(八)SharedPreferences、editor
- Android蓝牙打印格式排版
- Portlet知识
- android常用的URI如下
- 数据字典
- Struts 学习笔记之ActionForm
- DB2时间日期操作详解
- 谈一个软件工程师创业的前期投资和成功的可能性