Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.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 是";“真的”;(小写)是否已经是visual studio中的关键字?它能被推翻吗?_C_Visual Studio 2005_Boolean_Keyword_C89 - Fatal编程技术网

C 是";“真的”;(小写)是否已经是visual studio中的关键字?它能被推翻吗?

C 是";“真的”;(小写)是否已经是visual studio中的关键字?它能被推翻吗?,c,visual-studio-2005,boolean,keyword,c89,C,Visual Studio 2005,Boolean,Keyword,C89,我使用Visual Studio 2005 C++编译器(但使用C89类型ANSI C进行编码),AM无法定义“true”和“false”关键字,使用如下: #define true 1 #define false 0 我已经成功地使用了Green HealsC++编译器,但是VisualStudio的行为好像“true”和“false”已经是关键字。这是真的吗?我可以用自己的定义覆盖它们吗?如果可以,如何覆盖 使用上面的代码行,我在编译代码行时会遇到C2143错误,例如: someFunti

我使用Visual Studio 2005 C++编译器(但使用C89类型ANSI C进行编码),AM无法定义“true”和“false”关键字,使用如下:

#define true 1
#define false 0

我已经成功地使用了Green HealsC++编译器,但是VisualStudio的行为好像“true”和“false”已经是关键字。这是真的吗?我可以用自己的定义覆盖它们吗?如果可以,如何覆盖

使用上面的代码行,我在编译代码行时会遇到C2143错误,例如:

someFuntion(someVar,otherVar,true);

我已经确定其他类型与函数定义匹配,如果我将true更改为“1”或“0x1”,错误就会消失。

首先,
true
false
从来都不是C关键字,即使在C99/C11中也是如此。C99引入了本机布尔类型
\u Bool
,但
true
false
仍然只是
1
0
分别在
stdbool.h
中定义的宏

没有关于Visual Studio定义宏
true
false
的参考,但您始终可以使用:

#ifndef true
#define true 1
#endif
#ifndef false
#define false 0
#endif

问题不在于定义,而在于语法错误。我错误地使用了以下内容:#定义真1#定义假0;分号导致了问题。如果你想解释一下为什么我会投票支持你的答案。