visual studio 2010中写流代码时.c和.cpp有没有什么区别
visual studio 2010中写源代码时.c和.cpp有没有什么区别
刚开始学习C语言,用visual studio 2010编程序。看教程时看到C语言源代码可以保存成.cpp然后编译也可以运行,记得以前看过一篇教程是保存成的.c的。我自己搜索了一下区别如下,可是还是不是很明白,他说的是编译器在编译源文件时采用的修正方法不一样。
在编译源文件时,C编译器和C++编译器都会对符号(函数或变量)名作某些修正,但两者采用的修正方法不同,所以两者生成的目标文件不能互相链接。在C++中使用extern "C"可以让C++符号获得C链接特性。由于C++编译器会自动定义__cplusplus宏,所以在C语言头文件中采用这种结构可以保证无论使用何种编译器,生成的目标文件都具有C链接特性,能够与标准C编译器所生成的目标文件相链接。
通常c/c++编译器会根据文件后缀来选择符号修正,所以最好把c的代码放到.c文件中,把c++的代码放到.cpp文件中。
我的疑问如下:
在visual studio 2010中源文件保存成.c和保存成.cpp可以通用吗?
.c和.cpp只和编译器有关吗?
------解决方案--------------------
不一样,C文件可以在C++上编译运行,但是C++文件以.c后缀编译有可能出问题。
尽量写C程序就用.c后缀,C++程序就用.cpp后缀。
------解决方案--------------------
VS中默认使用C编译器编译.c文件,使用C++编译器编译.cpp文件
C++基本兼容C语言,所以C++编译器也基本可以编译C代码文件
但C和C++终究是不同的语言,所以C的一些特性C++就不支持,例如在类型检查上C++就比C严格,一些C编译器可以直接编译通过的代码C++编译器就会报警甚至报错
------解决方案--------------------
根本的解决方法是,你想写C代码,就用.c后缀,你想写C++代码,就用.cpp后缀
此外,就我所知VS一直没有支持C99,虽然国内的C语言教学好像也一直不支持,不过如果想要认真钻研C语言,那还是不要用VS系列,换gcc吧——当然比VS系列麻烦得多,不过怕麻烦就什么也别学了
刚开始学习C语言,用visual studio 2010编程序。看教程时看到C语言源代码可以保存成.cpp然后编译也可以运行,记得以前看过一篇教程是保存成的.c的。我自己搜索了一下区别如下,可是还是不是很明白,他说的是编译器在编译源文件时采用的修正方法不一样。
在编译源文件时,C编译器和C++编译器都会对符号(函数或变量)名作某些修正,但两者采用的修正方法不同,所以两者生成的目标文件不能互相链接。在C++中使用extern "C"可以让C++符号获得C链接特性。由于C++编译器会自动定义__cplusplus宏,所以在C语言头文件中采用这种结构可以保证无论使用何种编译器,生成的目标文件都具有C链接特性,能够与标准C编译器所生成的目标文件相链接。
通常c/c++编译器会根据文件后缀来选择符号修正,所以最好把c的代码放到.c文件中,把c++的代码放到.cpp文件中。
我的疑问如下:
在visual studio 2010中源文件保存成.c和保存成.cpp可以通用吗?
.c和.cpp只和编译器有关吗?
------解决方案--------------------
不一样,C文件可以在C++上编译运行,但是C++文件以.c后缀编译有可能出问题。
尽量写C程序就用.c后缀,C++程序就用.cpp后缀。
------解决方案--------------------
VS中默认使用C编译器编译.c文件,使用C++编译器编译.cpp文件
C++基本兼容C语言,所以C++编译器也基本可以编译C代码文件
但C和C++终究是不同的语言,所以C的一些特性C++就不支持,例如在类型检查上C++就比C严格,一些C编译器可以直接编译通过的代码C++编译器就会报警甚至报错
------解决方案--------------------
根本的解决方法是,你想写C代码,就用.c后缀,你想写C++代码,就用.cpp后缀
此外,就我所知VS一直没有支持C99,虽然国内的C语言教学好像也一直不支持,不过如果想要认真钻研C语言,那还是不要用VS系列,换gcc吧——当然比VS系列麻烦得多,不过怕麻烦就什么也别学了