Я столкнулся со следующей проблемой, и я не мог найти никаких конкретных объяснений: почему C не хочет предоставлять определения типов? Не определяет макрос BOOL так же хорошо, как определение типа Bool, используя typedef
?Почему C не требует определения типов?
Например, #define
директива может использоваться, чтобы создать макрос, который может быть использован в качестве логического типа:
#define Bool int
Там еще один способ создать логический тип, используя функцию, известную как определение типа.
typedef int Bool;
Почему последний метод предпочтительнее? Каковы преимущества?
В C отсутствует макрос BOOL, а также встроенный тип 'bool'. Существует, однако, boolena тип '_Bool', который следует использовать вместо homeprew' typedef 'или макросов. На ваш вопрос: это ** не ** предпочтительнее и сильно обескуражен. – Olaf
Обратите внимание, что C '' Bool' является типом, отличным от результата 'typedef int Bool;' OP во многих функциональных атрибутах. «Bool» здесь не является хорошим примером для демонстрации проблем OP с 'typedef' и' # define'. – chux
@chux: пример, где они различаются: '_Bool b = 5; printf (% d ", b);'. Попробуйте это с помощью 'typedef'ed' int'. – Olaf