У меня есть код вроде
#include <stdio.h>
#include <stdbool.h>
main() {
bool ok = true;
printf("%u\n", ok);
}
, и я компилирую его как
gcc -std=c90 -Wc90-c99-compat a.c
, но я не получаю никаких предупреждений.
Iожидается какое-то предупреждение, поскольку bool
не определено в C90 . В документации gcc
говорится, что флаг -Wc90-c99-compat
используется для
[w] arn о функциях, отсутствующих в ISO C90, но присутствующих в ISO C99.
Здесь вы можете попробовать сами .Моя версия gcc
- 7.3.0, версия TIO - 8.1.1.
Я что-то делаю неправильно или что-то неправильно понимаю?
Обновление.Что-то вроде
#include <stdio.h>
main() {
_Bool ok = 1;
printf("%u\n", ok);
}
выдает предупреждение: предупреждение: ISO C90 не поддерживает логические типы . Попробуйте здесь .
Я также пытался предварительно обработать первую версию с помощью
gcc -std=c90 -Wc90-c99-compat -E a.c
, и соответствующая часть становится
main() {
_Bool ok = 1;
printf("%u\n", ok);
}
, нооб этом не возникло никаких ошибок.
Обновление.
Как и предполагали другие, я подал отчет об ошибке .