在Visual Studio 2012 RC中定义ANSI C ISO/IEC-9899:1990中缺少的布尔类型

在Visual Studio 2012 RC中定义ANSI C ISO/IEC-9899:1990中缺少的布尔类型,c,visual-studio,visual-c++,C,Visual Studio,Visual C++,不起作用(编辑:它不针对“致命错误C1004:意外找到文件结尾”进行编译,而不仅仅针对Intellisense的推断)。我假设的原因是bool是MicrosoftVisualC/C++中保留的关键字之一。因为我需要布尔类型的文字名称作为精确的“bool”(也就是说,bool以外的类型名称,例如 typedef char bool; 是不允许的),是否有一个编译选项,我可以使用它覆盖ANSI C(ISO/IEC-9899:1990)Microsoft Visual C/C++中的关键字“bool

不起作用(编辑:它不针对“致命错误C1004:意外找到文件结尾”进行编译,而不仅仅针对Intellisense的推断)。我假设的原因是bool是MicrosoftVisualC/C++中保留的关键字之一。因为我需要布尔类型的文字名称作为精确的“bool”(也就是说,bool以外的类型名称,例如

typedef char bool;
是不允许的),是否有一个编译选项,我可以使用它覆盖ANSI C(ISO/IEC-9899:1990)Microsoft Visual C/C++中的关键字“bool”,该关键字是

NB:这不是关于C++或Visual C++的。它是关于在兼容模式下使用MSVC编译器在ANSI C 90中编程的

提前谢谢

补充的 编译选项:/TC/Za

boolean
BOOLEAN
BOOL
Bool
...

(编辑:这个问题已经解决。对于这种情况-typedef char bool-根据ANSI C,不能通过设置/Za选项来禁用Microsoft语言扩展,尽管Microsoft建议相反。这种不一致性可能被视为Visual Studio 2012 RC中的潜在错误)

文件中有一个选项,您可以选择编译为什么类型(您可以选择C或C++)


另外,您是否尝试过stdbool.h

什么是“不起作用”呢?你从编译器那里得到了什么信息?当使用Studio中的C编译器时,它通常会允许此
typedef
,而不会出现任何问题。即使在C文件中,编辑器也会突出显示
bool
作为关键字,但这并不意味着什么。C编译器不将
bool
视为关键字。他们是否在VS 2012中以某种方式破坏了它?@Mysticial Macro有效,但首选新类型。@AndreyT“e:\workspace\projects\brokernet\brokernet\types.h(20):致命错误C1004:发现意外的文件结尾”。不幸的是,它甚至不能编译。@Yang:它在VS2005、VS2008和VS2010中运行良好。如果此错误消息确实是由C编译器将
bool
视为关键字引起的,那么它一定是编译器中的一个错误。我在VS2012 RC中没有问题。您可以尝试将项目选项设置为C代码编译吗?
/* ANSI C file main.c */

typedef char bool;

int main(int argc, char * argv[])
{
    return 0;
}