在VS2010下编写C应注意的问题(和编写C++的区别)

用VS2010来编译C程序,在网上看到说在属性→C/C++→高级 对话框里面更改编译为:C代码(/TC)就可以进行C语言源码编译工作了,但是有时候不修改这个选项也不影响使用C来编译,那到底需不需要修改呢?
【C代码(/TC)和C++代码(/TP)有何区别?】

MSDN:
/Tc 选项指定 filename 为 C 源文件,即使它没有 .c 扩展名。/Tp 选项指定 filename 为 C++ 源文件,即使它没有 .cpp 或 .cxx 扩展名。选项和 filename 之间的空格是可选的。每个选项指定一个文件;若要指定其他文件,请重复此选项。

/TC 和 /TP 是 /Tc 和 /Tp 的全局变量。它们指定编译器将在命令行上命名的所有文件视为 C 源文件 (/TC) 或 C++ 源文件 (/TP),而不考虑它们在命令行上相对于选项的位置。这些全局选项可通过 /Tc 或 /Tp 在单个文件上重写。

/Tcfilename
/Tpfilename
/TC
/TP

参数
filename
C 或 C++ 源文件。

备注
默认情况下,CL 假定扩展名为 .c 的文件是 C 源文件,扩展名为 .cpp 或 .cxx 的文件是 C++ 源文件。

在 Visual Studio 开发环境中设置此编译器选项
打开此项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。

单击“C/C++”文件夹。

单击“高级”属性页。

修改“编译为”属性。

以编程方式设置此编译器选项
请参见 CompileAs。

示例
下列 CL 命令行指定 MAIN.c、TEST.prg 和 COLLATE.prg 都是 C 源文件。CL 将不识别 PRINT.prg。

复制代码
CL MAIN.C /TcTEST.PRG /TcCOLLATE.PRG PRINT.PRG

下列 CL 命令行指定 TEST1.c、TEST2.cxx、TEST3.huh 和 TEST4.o 作为 C++ 文件编译,TEST5.z 作为 C 文件编译。

复制代码
CL TEST1.C TEST2.CXX TEST3.HUH TEST4.O /Tc TEST5.Z /TP

请参见
参考
编译器选项
设置编译器选项

C语言和C++语言是两种不同的语言,不过C++兼容了大多C的语言特性这个设置决定了编译器按照哪个语言规则来进行编译,如果不涉及两种语言中存在差异的语法那么用哪个编译器都是一样的

编译器把.c文件当作C程序编译,把.cpp文件当作C++编译,即IDE中是根据文件后缀自动选择用C/C++编译器编译
由于C和C++在语法以及编译的一些细节上有所不同,所以如果在.c里写C++就会出错了。
很明显里面的东西都是C++的,保存成.c编译就出错了

猜你喜欢

转载自blog.csdn.net/u014157109/article/details/47303085
今日推荐