本地变量声明放置所需的Microsoft C / C ++编译器开关

时间:2011-01-07 20:43:34

标签: c windows variables compiler-construction declaration

我正在使用Microsoft C / C ++编译一些C文件,并且它抱怨在块中声明局部变量。当然,在块的开头声明它们很好。我可以用什么编译器开关来抑制我得到的错误?

非常感谢,

克里斯

4 个答案:

答案 0 :(得分:5)

在C89及更早版本中,所有块范围变量声明必须在任何语句之前。 C99改变了这个规则,因此声明和语句可以像在C ++中一样混合。

不幸的是,微软已选择不在Visual Studio中支持C99,并且没有计划使用AFAIK。

答案 1 :(得分:2)

在标准C中,您不能在任何地方声明变量,而是在开头。这与C ++不同,其中变量可以在任何地方声明。

因此,您必须通过/TP编译文件,就好像它们是C ++一样。

有关详细信息,请参阅this article

答案 2 :(得分:0)

CL.exe /Tpfilename

这意味着"编译为C ++,无论扩展名是什么"。

或者,换句话说,你所做的事情在C中是非法的,所以它当然抱怨。将其更改为C ++或强制将其作为C ++读取。

答案 3 :(得分:0)

您可以使用/ TP强制编译器将它们编译为C ++文件。不过,我不确定这是不是你想要的。