Я читал, что логические значения в C впервые появились в C99. Теперь мне интересно, почему bool тем не менее окрашивается подсветкой синтаксиса Xcode или как вы это называете...
Когда кто-то ищет «набрать» в настройках сборки в Xcode, всплывает «Диалект языка», и там я «набираю -in" в стандарте C89, и по-прежнему bool окрашивается.
Это почему?
Я также прочитал это:
Использование логических значений в 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 };
.
Почему xcode с C89 не игнорирует ключевое слово bool?
Как работают примеры?
#include <stdbool.h>
. - person zwol   schedule 27.02.2020bool
,true
иfalse
не являются ключевыми словами даже в последней версии стандарта C. C99 добавил настоящий логический тип type и ключевое слово_Bool
, но программы, которые определяютbool
,true
иfalse
по своему усмотрению, по-прежнему действительны в C99 и более поздних версиях (опять же, если они не включаютstdbool.h
). Это преднамеренное отличие от C++. - person zwol   schedule 27.02.2020enum
, имеют типint
? - person zwol   schedule 27.02.2020typedef int bool; bool { true, false };
не стал бы делать то, что нужно... - person zwol   schedule 27.02.2020typedef enum bool_t
{
b_false = 0,
b_true = 1
} bool;
- это то, что я использую, а также эти флаги -Wall-pedantic -std=c89
, и все равно они становятся цветными - person   schedule 27.02.2020