为什么在Visual Studio中,单词`false`是蓝色的,而单词`FALSE`是紫色的?

30
为什么Visual Studio根据输入方式更改单词颜色:
false以蓝色表示,但FALSE以紫色表示。
true以蓝色表示,但TRUE以紫色表示。
它们的含义有什么区别,如果有的话是什么?

14
FALSETRUE是宏。 - Retired Ninja
6
那被称为“语法高亮”,由文本编辑器执行,而不是编译器。文本编辑器使用哪些颜色绝对不会影响编译器解析您的代码或程序运行的方式。 - In silico
5
@Insilico:这并非完全无关。我们正在谈论Visual Studio;它肯定会在您输入时编译文本(IntelliSense)。这就是它如何产生错误的红色波浪线。 - MSalters
1
@MSalters:没错,不过我说的是“生成二进制文件的Visual C++编译器”,而不是“IDE用于智能感知的EDG前端”。 - In silico
4
为什么你认为这个问题应该放在UX板块?请注意,关于主要用于编程的工具的问题在SO上是可以接受的。而且,他并不是在问为什么(从UX角度)VisualStudio使用不同的颜色来显示类似的单词,而是为什么(从语法/编程的角度)这些单词被认为是不同的(因此用不同的颜色进行突出显示)。事实上,整个问题都可以重新表述,删除所有与颜色、UI和VisualStudio有关的引用,并缩减为“trueTRUE之间是否存在语义差异?” 所以:这绝对属于SO的范畴。 - Bakuriu
显示剩余3条评论
3个回答

38

false 是 C++ 中的一个关键字,与 for 一样是蓝色的。 FALSE 是由 Windows API 声明的预处理器宏,与 MYFILE_H_DEFINED 一样是紫色的。 如果您进入C++编辑器首选项,您会看到MSVC对不同标识符使用的颜色。

顺便提一下,TRUE和FALSE是WinAPI特定的,并且是对C的回顾,除了与WinAPI通信时不应使用之外,不应使用。


36

truefalse 是 C++ 中的关键字,因此您的 IDE(而不是编译器)会将它们标记为蓝色。

TRUE 和 FALSE 经常由各种头文件定义,主要是为了与 C 和旧的 C++ 编译器兼容,在这些编译器中,truefalse 不是关键字。

至于它们的等价性,C++ 标准sizeof(true)sizeof(false)定义为1,但它们将与sizeof(bool)相同。C++标准的69脚注:

sizeof(bool)不需要为1。

您可能会发现sizeof(TRUE)sizeof(FALSE)sizeof(int),因为 TRUE 和 FALSE 常被定义为int类型,但假设如此可能不明智。


5
语法高亮是为了让用户知道您输入的单词是语言中的关键字。每种语言都有自己的一组关键字。
需要澄清的是,这不是'编译器'更改颜色。这是Visual Studio为您执行的操作。根据文件的扩展名(如.cpp .java .py .js),软件会更改不同的单词。
大写的TRUE和FALSE是特定于Windows API(更具体地说是宏),而小写则是特定于c++语言。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接