Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
微软C/C++;局部变量声明放置所需的编译器开关_C_Windows_Variables_Compiler Construction_Declaration - Fatal编程技术网

微软C/C++;局部变量声明放置所需的编译器开关

微软C/C++;局部变量声明放置所需的编译器开关,c,windows,variables,compiler-construction,declaration,C,Windows,Variables,Compiler Construction,Declaration,我正在使用Microsoft C/C++编译一些C文件,它抱怨在块中声明局部变量。当然,在块的开头声明它们是可以的。我可以使用什么编译器开关来抑制我得到的错误 非常感谢 克里斯 它的意思是“编译为C++,不管扩展名”。 或者,换一种说法,你所做的在C中是非法的,所以它当然会抱怨。要么将其更改为C++,要么强制将其作为C++读取。可以使用/TP强制编译器编译它们作为C++文件。但是,我不确定这是否是您想要的。在标准C中,除了在开始时,您不能在任何地方声明变量。这与C++在任何地方都可以声明变量不同

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

非常感谢

克里斯

它的意思是“编译为C++,不管扩展名”。
或者,换一种说法,你所做的在C中是非法的,所以它当然会抱怨。要么将其更改为C++,要么强制将其作为C++读取。

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

在标准C中,除了在开始时,您不能在任何地方声明变量。这与C++在任何地方都可以声明变量不同。 因此,必须编译文件,就像它们是C++通过<代码> /tp>代码> < /p>
有关更多详细信息,请参阅。

在C89及更早版本中,所有块作用域变量声明必须位于任何语句之前。C99改变了这个规则,所以声明和语句可以在C++中混合。p>
不幸的是,微软已经选择不在VisualStudio中支持C99,也没有计划放弃

在C99中,您可以。微软只是决定不支持它。我真的希望,即使他们仍然不支持C99,微软至少会把它的这一部分作为“扩展”带到C上。嘿-他们为“/”评论做了@米迦勒在他们的时候,他们可以带来<>代码>内联函数,这些函数是在MVC2010 C++中实现的,而不是C。困惑的脸。米迦勒:哇…
/
注释有什么特别之处?我从没听说过那个@Lambert:单行注释C++中的通用和标准,但直到C 99才在C中使用(但是大多数编译器,甚至那些通常不支持C99的编译器,无论如何都支持它)。在C中混合代码和声明在10年以上是非法的。只是MS选择不支持C标准的新修订,对我来说似乎不起作用。我在发帖之前试过了。
CL.exe /Tpfilename