Реферат: Препроцессор языка C.
Стандарт ANSI для С++ раньше требовал определения этой переменной.
Хотя ее наличие больше не требуется, в GNU C++ она все еще определяется, как
и в других известных компиляторах С++. Этот макрос может быть использован
для определения каким компилятором был скомпилирован заголовок (С или С++).
'__STRICT_ANSI__'
Этот макрос определяется тогда и только тогда, когда при вызове GNU C
указывается опция '-ansi'. Он определяется как пустая строка.
'__BASE_FILE__'
Этот макрос заменяется на имя основного исходного файла в форме
строковой константы С. Это исходный файл, указываемый в качестве параметра
при вызове компилятора С.
'__INCLUDE_LEVEL__'
Этот макрос заменяется на десятичную целую константу, которая указывает
на уровень вложенности подключаемых файлов. Его значение увеличивается на
единицу при обработке директивы '#include' и уменьшается на единицу при
завершении обработки каждого файла. Начальное значение для файлов,
указываемых в командной строке при вызове компилятора является равным нулю.
'__VERSION__'
Этот макрос заменяется сторокой, указывающей номер версии GNU C.
Обычно это последовательность десятичных чисел, разделенных точками.
Например '"2.6.0"'.
'__OPTIMIZE__'
Этот макрос определяется в оптимизирующих компиляторах. Если но
определен, то это приводит к созданию в подключаемых файлах GNU
альтернативных макроопределений для некоторых функций из системных библиотек.
Проверка или использование значения этого макроса не имеет особого смысла,
до тех пор, пока не будет полной уверенности в том, что программы будут
выполняться с таким же эффектом.
'__CHAR_UNSIGNED__'