Действительно ли bool является собственным типом C?

Удача, которая является жесткой частью того, чтобы быть разработчиком.

я думаю, что Ваш подход хорош, но необходимо сфокусироваться на поставке бизнес-возможности (количество модульных тестов не является мерой бизнес-возможности, но это может дать Вам признак, если Вы идете или от дорожки). Важно определить поведения, которые должны быть изменены, расположить по приоритетам, и фокусироваться на главных.

другая часть советует, должен остаться скромным. Поймите, что, если бы Вы записали что-то настолько большое под реальными крайними сроками и кто-то еще видел Ваш код, у них, вероятно, были бы проблемы при понимании этого также. Существует навык в записи чистого кода, и существует более важный навык имея дело с чужим кодом.

последняя часть советует, должен попытаться усилить остальную часть Вашей команды. Прошлые участники могут знать информацию о системе, которую можно изучить. Кроме того, они могут быть в состоянии помочь протестировать поведения. Я знаю, что идеал должен автоматизировать тесты, но если кто-то может помочь путем проверки, что вещи для Вас вручную рассматривают получение их справки.

247
задан Matt Joiner 29 October 2009 в 00:18
поделиться

8 ответов

bool существует в текущем C - C99, но не в C89 / 90.

В C99 собственный тип на самом деле называется _Bool , а bool - это макрос стандартной библиотеки, определенный в stdbool.h (который, как ожидается, преобразуется в _Bool ). Объекты типа _Bool содержат 0 или 1, а true и false также являются макросами из stdbool.h .

Примечание. , Кстати, это означает, что препроцессор C будет интерпретировать #if true как #if 0 , если не включен stdbool.h . Между тем, препроцессор C ++ должен изначально распознавать true как литерал языка.

346
ответ дан 23 November 2019 в 03:02
поделиться

C99 добавил встроенный _Bool (подробности см. В Википедии ), и если вы #include , он предоставляет bool в качестве макроса. to _Bool .

Вы спрашивали, в частности, о ядре Linux. Он предполагает наличие _Bool и предоставляет сам typedef bool в include / linux / types.h .

.
115
ответ дан 23 November 2019 в 03:02
поделиться

C99 определяет логические значения, истину и ложь в stdbool.h .

6
ответ дан 23 November 2019 в 03:02
поделиться

_Bool - это ключевое слово в C99: оно определяет тип, как и int или double .

6.5.2

2 Объект, объявленный как тип _Bool достаточно велик, чтобы хранить значения 0 и 1.

12
ответ дан 23 November 2019 в 03:02
поделиться

stdbool.h был представлен в c99

2
ответ дан 23 November 2019 в 03:02
поделиться

Ничего подобного, вероятно, просто макрос для int

0
ответ дан 23 November 2019 в 03:02
поделиться

C99 имеет его в stdbool.h , но в C90 он должен быть определен как typedef или enum:

typedef int bool;
#define TRUE  1
#define FALSE 0

bool f = FALSE;
if (f) { ... }

Альтернативно:

typedef enum { FALSE, TRUE } boolean;

boolean b = FALSE;
if (b) { ... }
32
ответ дан 23 November 2019 в 03:02
поделиться

No, there is no bool in ISO C90.

Here's a list of keywords in standard C (not C99):

  • auto
  • break
  • case
  • char
  • const
  • continue
  • default
  • do
  • double
  • else
  • enum
  • extern
  • float
  • for
  • goto
  • if
  • int
  • long
  • register
  • return
  • short
  • signed
  • static
  • struct
  • switch
  • typedef
  • union
  • unsigned
  • void
  • volatile
  • while

Here's an article discussing some other differences with C as used in the kernel and the standard: http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/index.html

32
ответ дан 23 November 2019 в 03:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: