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)]。
这样就对不