Предустановленный макрос
Приводит список макросов препроцессора реализации ANSI/ISO C99 и Microsoft C++.
Компилятор распознает предварительно определенные макросы препроцессора ANSI/ISO C99, а реализация Microsoft C++ предоставляет еще несколько макросов. Эти макросы препроцессора не принимают аргументы и не могут быть переопределены. Некоторые из предопределенных макросов, перечисленных в этом разделе, определяются с несколькими значениями.
ANSI-совместимые предопределенные макросы
Макрос |
Описание |
---|---|
__DATE__ |
Дата компиляции текущего файла исходного кода. Дата — это строковый литерал в формате Ммм дд гггг. Название месяца Ммм такое же, как и для дат, созданных функцией библиотеки asctime, объявленной в TIME.H. |
__FILE__ |
Имя текущего файла исходного кода. __FILE__ развертывается в строковый литерал. Чтобы путь к файлу отображался полностью, используйте параметр /FC (полный путь к файлу исходного кода в папке Diagnostics). |
__func__ |
Возвращает неполное и недекорируемое имя внешней функции как массив символов.
|
__LINE__ |
Номер строки в текущем файле исходного кода. Номер строки — десятичный целый литерал. Его можно изменить с помощью директивы #line. |
__STDC__ |
Указывает соответствие стандарту ANSI/ISO C99. Определяется как целочисленная константа 1, только если задан параметр компилятора /Za и не выполняется компиляция кода C++; в противном случае значение не определено. |
__TIME__ |
Время последней компиляции текущего файла исходного кода. Время — это строковый литерал в формате чч:мм:сс. |
__TIMESTAMP__ |
Дата и время последнего изменения текущего файла исходного кода в виде строкового литерала в формате Ддд Ммм Дата чч:мм:сс гггг, где Ддд — сокращенный день недели, а Дата — целое число от 1 до 31. |
Предопределенные макросы, предназначенные специально для систем Microsoft
Макрос |
Описание |
---|---|
_ATL_VER |
Определяет версию библиотеки ATL, закодированную как целочисленный литерал. |
__AVX__ |
Определяется, если задан параметр /arch:AVX или /arch:AVX2. |
__AVX2__ |
Определяется, если задан параметр /arch:AVX2. |
_CHAR_UNSIGNED |
По умолчанию тип char является беззнаковым. Определяется, если задан параметр /J. |
__CLR_VER |
Задает версию среды CLR, используемой при компиляции приложения. Возвращаемое значение является целочисленным литералом, закодированным в следующем формате: Mmmbbbbb где
|
__cplusplus_cli |
Определяется при компиляции с параметрами /clr, /clr:pure или /clr:safe. Значение __cplusplus_cli является целочисленным литералом 200406. __cplusplus_cli действует во всем блоке преобразования.
|
__cplusplus_winrt |
Определяется при использовании параметра /ZW для компиляции. Значение __cplusplus_winrt является целочисленным литералом 201009. |
__COUNTER__ |
Разворачивается в целочисленный литерал, начинающийся с 0 и увеличивающийся на 1 каждый раз, когда используется в исходном файле или во включенных заголовках исходного файла. __COUNTER__ запоминает свое состояние при использовании предкомпилированных заголовков. В следующем примере макрос __COUNTER__ присваивает уникальные идентификаторы трем различным объектам одного типа. Сначала возьмем следующее определение класса. Конструктор принимает целое число в качестве параметра.
В функции main приложение объявляет три объекта типа exampleClass, используя __COUNTER__ в качестве параметра уникального идентификатора.
|
__cplusplus |
Определяется только для программ на языке C++. |
_CPPRTTI |
Определяется для кода, компилируемого с использованием параметра /GR (включить информацию о типах времени выполнения). |
_CPPUNWIND |
Определяется для кода, компилируемого с использованием одного из флагов Параметр /EH (модель обработки исключений). |
_DEBUG |
Определяется при компиляции с параметрами /LDd, /MDd и /MTd. |
_DLL |
Определяется, если указан параметр /MD или /MDd (многопоточная DLL). |
__FUNCDNAME__ |
Допустим только в функции. Определяет внутреннее имя включающей функции в виде строкового литерала. __FUNCDNAME__ не разворачивается при использовании параметра компилятора /EP или /P. В следующем примере макросы __FUNCDNAME__, __FUNCSIG__, и макросы __FUNCTION__ для выводят информацию о функции.
|
__FUNCSIG__ |
Допустим только в функции. Определяет сигнатуру включающей функции в виде строкового литерала. __FUNCSIG__ не разворачивается при использовании параметра компилятора /EP или /P. В 64-разрядной операционной системе по умолчанию используется соглашение о вызовах __cdecl. Пример см. в разделе __FUNCDNAME__. |
__FUNCTION__ |
Допустим только в функции. Определяет внешнее имя включающей функции в виде строкового литерала. __FUNCTION__ не разворачивается при использовании параметра компилятора /EP или /P. Пример см. в разделе __FUNCDNAME__. |
_INTEGRAL_MAX_BITS |
Сообщает максимальный размер (в битах) для интегрального типа в виде целочисленного литерала.
|
_M_AMD64 |
Определяется для компиляций, предназначенных для процессоров x64. |
_M_ARM |
Определяется для компиляций, предназначенных для процессоров ARM. |
_M_CEE |
Определяется для компиляции, в которой используется любая форма /clr (например, /clr:oldSyntax, /clr:safe). |
_M_CEE_PURE |
Определяется для компиляции, в которой используется /clr:pure. |
_M_CEE_SAFE |
Определяется для компиляции, в которой используется /clr:safe. |
_M_IX86 |
Определяется для компиляций, предназначенных для процессоров x86. Не определен для процессоров x64. |
_M_ARM_FP |
Разворачивается в значение целочисленного литерала, указывающее, какой параметр компилятора /arch использовался.
|
_M_IX86_FP |
Разворачивается в значение целочисленного литерала, указывающее, какой параметр компилятора /arch использовался.
|
_M_X64 |
Определяется для компиляций, предназначенных для процессоров x64. |
_MANAGED |
Определяется и имеет значение 1, если указан параметр /clr. |
_MFC_VER |
Определяет версию библиотеки MFC, закодированную как целочисленный литерал. |
_MSC_BUILD |
Вычисляет целочисленный литерал, содержащий номер редакции — компонент номера версии компилятора. Номер редакции — это четвертый компонент разделенного точками номера версии. Например, для номера версии компилятора Visual C++ 15.00.20706.01 макрос _MSC_BUILD возвращает значение 1. |
_MSC_EXTENSIONS |
Этот макрос определяется при компиляции с параметром компилятора /Ze (по умолчанию). Если макрос определен, его значение равно 1. |
_MSC_FULL_VER |
Вычисляет целочисленный литерал, который кодирует основной номер, дополнительный номер и номер сборки — компоненты номера версии компилятора. Основной номер — это первый компонент разделенного точками номера версии, дополнительный номер — второй компонент, а номер сборки — третий компонент. Например, для номера версии компилятора Visual C++ 15.00.20706.01 макрос _MSC_FULL_VER возвращает значение 150020706. Для просмотра номера версии компилятора введите cl /? в командной строке. |
_MSC_VER |
Вычисляет целочисленный литерал, который кодирует основной и дополнительный номер — компоненты номера версии компилятора. Основной номер — это первый компонент разделенного точками номера версии, а дополнительный номер — второй компонент. Например, для номера версии компилятора Visual C++ 17.00.51106.1 макрос _MSC_VER возвращает значение 1700. Для просмотра номера версии компилятора введите cl /? в командной строке. |
__MSVC_RUNTIME_CHECKS |
Определяется, если указан один из параметров компилятора /RTC. |
_MT |
Определяется, если задан параметр /MD или /MDd (многопоточная библиотека DLL) либо /MT или /MTd (многопоточный). |
_NATIVE_WCHAR_T_DEFINED |
Определяется при использовании параметра /Zc: wchar_t. |
_OPENMP |
Определенный при компиляции с параметром /openmp, оценивается как целочисленный литерал, представляющий дату спецификации OpenMP, реализуемой Visual C++.
|
_VC_NODEFAULTLIB |
Определяется при использовании параметра /Zl; дополнительные сведения см. в описании параметра /Zl (Опущенное по умолчанию имя библиотеки). |
_WCHAR_T_DEFINED |
Определяется, если используется параметр /Zc: wchar_t или параметра wchar_t определяется в системном файле заголовка, включенном в проект. |
_WIN32 |
Определяется для приложений для Win32 и Win64. Определяется всегда. |
_WIN64 |
Определяется для приложений для Win64. |