Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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
Linux 什么原因会导致gcc不承认一个;“bool”;不再_Linux_Gcc_Boolean - Fatal编程技术网

Linux 什么原因会导致gcc不承认一个;“bool”;不再

Linux 什么原因会导致gcc不承认一个;“bool”;不再,linux,gcc,boolean,Linux,Gcc,Boolean,我用布尔语言编写了大量代码,并且毫无问题地进行了编译。然后编译器甚至编辑器不再识别“bool”。我做的一个修正是“#include”来识别布尔人 但是我想知道什么可能导致这个问题?在C11中,只有在包含标准头stdbool.h时才定义类型bool。否则,该类型必须称为\u Bool。这是标准早期版本中完全没有布尔类型的结果,并且在所述标准的发展过程中注重向后兼容性 在C++中, BOOL类型不含任何标题,就像 int > 您的问题是关于GCC,而不是关于C标准,但是如果您不使用命令行选项,例

我用布尔语言编写了大量代码,并且毫无问题地进行了编译。然后编译器甚至编辑器不再识别“bool”。我做的一个修正是“
#include
”来识别布尔人


但是我想知道什么可能导致这个问题?

在C11中,只有在包含标准头stdbool.h时才定义类型
bool
。否则,该类型必须称为
\u Bool
。这是标准早期版本中完全没有布尔类型的结果,并且在所述标准的发展过程中注重向后兼容性

在C++中, BOOL类型不含任何标题,就像<代码> int <代码> >

您的问题是关于GCC,而不是关于C标准,但是如果您不使用命令行选项,例如
-std=c11-pedantic
,使其成为符合标准的编译器,那么GCC确实对C标准有一些模糊的自由,在类型
bool
的情况下,它遵循C标准,并且不定义它

<> P>你可能是编译C++以前的代码,现在编译成C。另一种可能性是你包括一个包含STDBOOL。H的应用程序头,或者它提供了自己的定义:<代码> BOOL,并且你不再包括这个头。
(理论上,我们甚至可以想象,所讨论的头文件是一个系统头文件,它以前包含stdbool.h,但在升级编译平台时停止了。原则上,无法保证哪个系统头文件可能包含哪些其他系统头文件。但实际上,由于stdboo的唯一用途l、 h是为了保持与不包含它的旧代码的兼容性,stdbool.h永远不会被另一个系统头包含。)

在C中不包含
stdbool.h
?直到最近在C中才必须这样做,使用gcc实现这一点的唯一其他方法是
#定义bool
,例如
typedef enum{FALSE=0,TRUE=!FALSE}bool;
(并确保定义了
TRUE
FALSE
)。没有
stdbool.h
,我从未让它工作过(奇怪)你有一个标题,可能是自定义的BooL?什么改变了?你更新了版本等等吗?这不是问题,这是意料之中的。<代码>布尔O/S>是在<代码> STDBOOL。H/COD>中定义的。我认为你的问题需要语言参考。C+C++?FORTRAN?我相信GCC甚至可以构建艾达代码。