我使用的是一个相当老的代码库,而且都是C99之前的版本。因此,没有bool类型,而是一个BOOLEAN枚举。我是一个年轻的枪,所以我喜欢VS2010,但它不是特别适合与旧的代码库。我猜它是在使用MSVC2010来做它的在线错误突出显示,我也猜MSVC2010符合C99标准。我可能错了,但无论如何,当我用布尔表达式分配布尔变量时,它会突出显示“错误”。我举一个简单的例子:

typedef enum boolean_tag {FALSE, TRUE} BOOLEAN;
BOOLEAN test = FALSE;
test = 1 == 1;

在VS2010编辑器中,=将被错误突出显示,鼠标悬停时将注意到,bool类型的值不能分配给BOOLEAN类型的实体。由于pre-C99没有bool的概念,这应该只是枚举值的赋值,因此不是错误。
所以,我的问题是:有没有办法告诉VS2010使用C99之前的语法/错误检查?或者,这是一个扩展,它是否为这些函数使用了另一个编译器?
谢谢。
编辑:修正的MSVC2010假设

最佳答案

一些需要考虑的事情:
VisualStudio是C++编译器,因此不适合编译严格遵守C程序的程序。
Visual Studio不太符合C标准的任何版本。它当然不遵循或实现C99标准。
在C++中,表达式1 == 1计算为true类型的bool
在C语言中,任何版本的标准,1 == 1都会计算为1类型的值。
VisualStudio抱怨是因为您试图将BoL存储在枚举中,这在C++中是不好的,这是一种具有强类型的语言。在C语言中没有这样的限制。
您的问题的答案是:您之所以遇到这些问题,是因为您试图在编译器中用另一种编程语言编译一个C程序。

关于c - 在Visual Studio 2010中使用C99之前的语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15067761/

10-13 06:12