【发布时间】:2020-02-27 15:56:11
【问题描述】:
我读到 C 中的布尔值首先来自 C99。现在我想知道为什么 bool 仍然会被 Xcode 的语法高亮或你所称的着色...
当在 Xcode 的构建设置中搜索“拨号”时,会弹出“语言方言”,然后我“拨入”C89 标准,但 bool 仍然会被着色。
这是为什么呢?
我也读到了这个:
Using boolean values in C
我知道他们是如何做到的,但我也不明白示例 3 和 4 的工作原理......
Option 3
typedef int bool;
enum { false, true };
Option 4
typedef int bool;
#define true 1
#define false 0
注意:我不明白typedef int bool; 怎么会与enum { false, true }; 线路相连。
为什么带有 C89 的 xcode 不忽略 bool 关键字?
这些示例是如何工作的?
【问题讨论】:
-
我认为 Xcode 的语法高亮可能只是没有注意“语言方言”设置。您的“选项 3”和“选项 4”是否在 C89 模式下编译?他们应该,只要你不
#include <stdbool.h>。 -
Xcode 是 IDE 而不是编译器。它有自己的规则。
-
另外,您应该知道即使在最新版本的 C 标准中,
bool、true和false也是 not 关键字。 C99 添加了一个真正的布尔 type 和关键字_Bool,但定义bool、true和false的程序在 C99 和更高版本中仍然有效(同样,如只要它们不包括stdbool.h)。这是与 C++ 的有意区别。 -
嘿!我没有尝试选项 3 和 4,因为我不明白“ typedef int bool; ”无论如何可以与“ enum { false, true }; ”行连接
-
@Nickname 如果我告诉您
enum声明定义的常量具有int类型,这有帮助吗?