Следующие имена макросов должны быть определены реализацией:
__cplusplus
Целочисленный литерал 201703L.152
__DATE__
Дата перевода исходного файла: символьный строковый литерал формы
"Mmm dd yyyy", где названия месяцев совпадают с названиями месяцев, сгенерированными
asctime
функцией, а первый символ
dd
- это пробел, если значение меньше 10. Если дата перевода недоступна, должна быть указана действительная дата, определяемая реализацией.
__FILE__
Предполагаемое имя текущего исходного файла (литерал символьной строки).153
__LINE__
Предполагаемый номер строки (в текущем исходном файле) текущей исходной строки (целочисленный литерал).154
__STDC_HOSTED__
Целочисленный литерал, 1 если реализация является размещенной реализацией, или целочисленный литерал, 0 если это не так.
__STDCPP_DEFAULT_NEW_ALIGNMENT__
Целочисленный литерал типа std::size_t
, значение которого является выравниванием, гарантированным вызовом operator new(std::size_t)
или operator new[](std::size_t). [ Note:
Большие выравнивания будут переданы и
operator new(std::size_t, std::align_val_t)т. Д. ([expr.new]).
] — end note
__TIME__
Время перевода исходного файла: символьный строковый литерал формы,
"hh:mm:ss"
как во времени, сгенерированном
asctime
функцией. Если время трансляции недоступно, должно быть указано действительное время, определяемое реализацией.
Следующие имена макросов условно определены реализацией:
__STDC__
Предопределено ли __STDC__ оно заранее, и если да, то каково его значение, определяется реализацией.
__STDC_MB_MIGHT_NEQ_WC__
Целочисленный литерал 1, предназначенный для обозначения того, что в кодировке для
wchar_tчлен базового набора символов не обязательно должен иметь кодовое значение, равное его значению, при использовании в качестве одиночного символа в обычном символьном литерале.
__STDC_VERSION__
Предопределено ли __STDC_VERSION__ оно заранее, и если да, то каково его значение, определяется реализацией.
__STDC_ISO_10646__
Целочисленный литерал формы yyyymmL (например,
199712L). Если этот символ определен, то каждый символ в требуемом наборе Unicode, когда он хранится в объекте типа wchar_t, имеет то же значение, что и короткий идентификатор этого символа. Он Unicode required set состоит из всех символов, определенных в ISO / IEC 10646, вместе со всеми поправками и техническими исправлениями по состоянию на указанный год и месяц.
__STDCPP_STRICT_POINTER_SAFETY__
Определен и имеет значение целочисленного литерала 1 тогда и только тогда, когда реализация имеет strict pointer safety.
__STDCPP_THREADS__
Определен и имеет значение целочисленного литерала 1 тогда и только тогда, когда программа может иметь более одного thread of execution.
Значения предопределенных макросов (кроме __FILE__ и __LINE__) остаются постоянными во всей единице перевода.
Если какое-либо из предварительно определенных имен макросов в этом подпункте или идентификатор definedявляется предметом директивы#define или #undefдирективы предварительной обработки, поведение не определено. Любые другие предопределенные имена макросов должны начинаться с символа подчеркивания в начале, за которым следует заглавная буква или второй знак подчеркивания.
Предполагается, что в будущих версиях этого международного стандарта значение этого макроса будет заменено на большее значение. Несоответствующие компиляторы должны использовать значение, содержащее не более пяти десятичных цифр.
Предполагаемое имя исходного файла можно изменить с помощью #line директивы.
Предполагаемый номер строки может быть изменен #line директивой.