$ cat test.c
#include <float.h>
main()
{
int x=FLT_DECIMAL_DIG;
}
$ gcc test.c
test.c: В функции «main»:
test.c:4:11: ошибка: «FLT_DECIMAL_DIG» undeclared (first use in this function)
test.c:4:11: замечание: each undeclared identifier is reported only once for each function it appears in
Файла float.h в /usr/include/ нет. Зато я его нашёл в /usr/lib/gcc/x86_64-linux-gnu/4.6/include/
Больше в моей системе такого файла нигде нет (искал locate-ом).
GCC ругается не на все константы из этого файла, например FLT_MANT_DIG и FLT_RADIX он спокойно принимает и даже выводит их значения.
Ещё заметил, что vim подсвечивает те константы, о которых gcc «знает», а те, на которые ругается, оставляет белыми. Возможно, он знает набор каких-то классических констант (времён ANSI C), а про новые и не слышал, бог с ним. Но GCC такое поведение непростительно!
Пробовал -std=c99, эффекта нет.