Почему stdbool.h не рекомендуется? [закрыто]

Принятый ответ предыдущего вопроса имеет алгоритм для половины этого: он превращает "first" в 1. Чтобы перейти оттуда к "1st", сделайте что-то вроде:

suffixes = ["th", "st", "nd", "rd", ] + ["th"] * 16
suffixed_num = str(num) + suffixes[num % 100]

Это работает только для чисел 0-19.

1
задан Lærne 13 July 2018 в 10:23
поделиться

2 ответа

Почему stdbool.h не рекомендуется?

Это не так.

Вы указали следующее примечание:

Возможность определения и переопределения макросов bool, true и false является устаревшей функцией и может быть удалена в будущей версии.

. Это означает, что следующий абзац может быть удален в будущее:

Приложение может не определять и затем переопределять макросы bool, true и false.

Это не означает, что заголовок или его содержимое будет удалено.

6
ответ дан sepp2k 17 August 2018 в 13:10
поделиться
  • 1
    Я думаю, что намерение этого текста состоит в том, чтобы позволить <stdbool.h> делать что-то другое, кроме определения true и false в качестве макросов, эквивалентных 0 и 1 (например, определять их как макросы, которые расширяются до встроенных компиляторов __true ] и __false - возможно, чтобы помочь компилятору создать более полезную диагностику). Такая обработка будет подорвана приложением, которое не определило эти макросы и переопределило их как 0 и 1. – supercat 13 July 2018 в 16:38
  • 2
    но это не значит, что <stdbool.h> устарел .... Боюсь. Вероятно, это означает, что из-за существования заголовка <stdbool.h>, задача определения макросов для true или false и bool - это то, что устарело. – Luis Colorado 13 July 2018 в 16:51

В вашем вопросе есть несколько недоразумений:

  • Во-первых, вы ссылаетесь на ссылку POSIX, которая часто следует за стандартом C, но это не обязательно.
  • Раздел, который вы цитируете, является информативным , а не фактическим, и, как таковой, может вообще не отражать стандарт C. И как таковой он также не является авторитетным.
  • В цитате также говорится, что способность пользователей отменять или переопределять макросы - это то, что можно отнять. Макросы в заголовочном файле <stdbool.h> не будут затронуты этим.
  • Наконец, в нем также говорится, что возможность может быть удалена , а не что он будет или был.
6
ответ дан Some programmer dude 17 August 2018 в 13:10
поделиться
Другие вопросы по тегам:

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