Компілятор Visual C ++ визначається готовий певні макроси препроцесора, в залежності від мови (C або C ++), цільового об'єкта компіляції і параметри обраного компілятора.
Visual C ++ підтримує необхідні зумовлені макроси препроцесора, який визначається стандартом ANSI / ISO C99 і ISO стандартом C ++ 14. Реалізація також підтримує кілька додаткових систем Microsoft макросів препроцесора. Деякі макроси визначаються тільки для певної збірки середовищ або параметри компілятора. Якщо не вказано, макроси визначаються в запису перетворення, як якщо б вони були вказані як / D аргументів параметра компілятора. При визначенні, макроси розгортаються препроцесором перед компіляцією вказані значення. Зумовлені макроси не приймають аргументи і не можуть бути перевизначені.
Компілятор підтримує це зумовлений ідентифікатор, який визначається C99 стандарту ISO і ISO C ++ 11.
__func__ неповне і недекоріруемое ім'я включає функції у вигляді функції локальної static``const масив char.
Компілятор підтримує такі зумовлені макроси, який визначається ISO C99 і C ++ 14 стандартів ISO.
__cplusplus визначено як значення цілочисельного літерала, коли записи перетворення компілюється як C ++. В іншому разі не визначено.
__DATE__ Дата компіляції поточного файлу вихідного коду. Дата - це рядок константи довжиною літерал в форматі ммм дд рррр. Назва місяця Mmm збігається скорочена назва місяця в дат, створених бібліотекою часу виконання C asctime функції. Дата першого символу дд - це простір, якщо значення менше 10. Цей макрос визначається завжди.
__FILE__ ім'я поточного файлу вихідного коду. __FILE__ розгортається для символьного литерала. Щоб переконатися, що відображається повний шлях до файлу, використовуйте / FC (повний шлях для файлу вихідного коду в діагностики). Цей макрос визначається завжди.
__LINE__ визначається як ціле число номер рядка в поточному вихідному файлі. Значення __LINE__ макрос може бути змінений за допомогою #line директиви. Цей макрос визначається завжди.
__STDC__ визначено як 1 тільки в тому випадку, якщо компілюється як C і / Za вказано параметр компілятора. В іншому разі не визначено.
__STDC_HOSTED__ визначено як 1, якщо реалізація hosted реалізацію. підтримує всі необхідні стандартної бібліотеки. В іншому випадку - визначається як 0.
__STDCPP_THREADS__ визначається як 1 тільки в тому випадку, якщо в програмі може бути присутнім більш ніж один потік виконання і скомпільовано як C ++. В іншому разі не визначено.
__TIME__ час переклад записи перетворення попередньої обробки. Час є рядком символів літерал в форматі гг. таким же, як час, повернене бібліотекою часу виконання C asctime функції. Цей макрос визначається завжди.
_CPPRTTI визначається як 1, якщо / GR (включити інформацію про типах часу виконання) заданий параметр компілятора. В іншому разі не визначено.
_DEBUG визначено як 1, якщо / LDd. / MDd. або / MTd заданий параметр компілятора. В іншому разі не визначено.
_DLL визначається як 1, якщо / 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 певні як ціле 64 литеральное значення, максимальний розмір (в бітах) для цілочисельний тип не вектор. Цей макрос визначається завжди.
__INTELLISENSE__ визначено як 1 під час компілятора IntelliSense передайте в Інтегрованої середовищі розробки Visual Studio. В іншому разі не визначено. Цей макрос можна використовувати для захисту коду компілятор IntelliSense не розуміти і використовувати його для перемикання між збірки і компілятора IntelliSense. Додаткові відомості див. У розділі Поради щодо усунення неполадок для IntelliSense швидкодією.
_ISO_VOLATILE визначається як 1, якщо / volatile: iso заданий параметр компілятора. В іншому разі не визначено.
_KERNEL_MODE визначається як 1, якщо / kernel (Створення двійкового режиму ядра) заданий параметр компілятора. В іншому разі не визначено.
_M_AMD64 визначено як цілочисельний літерал, процесорів x64 значення 100 для компіляції. В іншому разі не визначено.
_M_ARM визначається як целочисленное литеральное значення 7 для компіляцій, призначених для процесорів ARM. В іншому разі не визначено.
_M_ARM_ARMV7VE визначається як 1, якщо / arch: ARMv7VE заданий параметр компілятора для компіляцій, призначених для процесорів ARM. В іншому разі не визначено.
_M_ARM_FP визначається як значення цілочисельного літерала, яке вказує, що / arch було поставлено параметр компілятора, якщо цільового об'єкта компіляції для процесорів ARM. В іншому разі не визначено.
У діапазоні 30-39, а то й / arch був вказаний параметр ARM, встановлено значення, яке вказує, за замовчуванням архітектура для ARM (VFPv3).
У діапазоні 40-49, якщо / arch: VFPv4 був встановлений.
У розділі / arch (ARM) для отримання додаткової інформації.
_M_ARM64 визначено як 1 для компіляцій, призначених для 64-розрядних процесорів ARM. В іншому разі не визначено.
_M_CEE визначається як 001 Якщо будь-який / CLR (компіляція CLR) заданий параметр компілятора. В іншому разі не визначено.
_M_CEE_PURE визначається як 001 Якщо / CLR: pure заданий параметр компілятора. В іншому разі не визначено.
_M_CEE_SAFE визначається як 001 Якщо / CLR: safe заданий параметр компілятора. В іншому разі не визначено.
_M_FP_EXCEPT визначається як 1, якщо / fp: за винятком або / fp: strict заданий параметр компілятора. В іншому разі не визначено.
_M_FP_FAST визначається як 1, якщо / fp: fast заданий параметр компілятора. В іншому разі не визначено.
_M_FP_PRECISE визначається як 1, якщо / fp: точний заданий параметр компілятора. В іншому разі не визначено.
_M_FP_STRICT визначається як 1, якщо / fp: strict заданий параметр компілятора. В іншому разі не визначено.
_M_IX86 визначено як цілочисельний літерал, процесорів x86 значення 600 компіляцій. Цей макрос не визначений для x64 або цільових об'єктів компіляції ARM.
_M_IX86_FP визначається як значення цілочисельного літерала, яке вказує / arch параметра компілятора, який був встановлений, або значення за замовчуванням. Цей макрос визначається завжди, коли цільового об'єкта компіляції x86 процесора. В іншому разі не визначено. Якщо визначена, значення дорівнює:
0, якщо / arch: IA32 було встановлено параметр компілятора.
1, якщо / arch: SSE був встановлений параметр компілятора.
2, якщо / arch: SSE2. / Arch: AVX або / arch: AVX2 був встановлений параметр компілятора. Це значення використовується за умовчанням, якщо / arch не було зазначено параметр компілятора. Коли / arch: AVX вказано, макрос __AVX__ також визначені. Коли / arch: AVX2 зазначено, як __AVX__ і __AVX2__ також визначені.
У розділі / arch (x86) Детальніше.
_M_X64 визначено як цілочисельний літерал, процесорів x64 значення 100 для компіляції. В іншому разі не визначено.
_MANAGED визначено як 1, якщо / CLR заданий параметр компілятора. В іншому разі не визначено.
_MSC_EXTENSIONS визначається як 1, якщо / Ze (включити розширення мови) заданий параметр компілятора, який використовується за умовчанням. В іншому разі не визначено.
__MSVC_RUNTIME_CHECKS визначається як 1, якщо в одному з / RTC задати параметри компілятора. В іншому разі не визначено.
_MT визначено як 1, якщо / MD або / MDd (Багатопотокова DLL) або / MT або / MTd зазначено (багато-). В іншому разі не визначено.
_NATIVE_WCHAR_T_DEFINED визначається як 1, якщо / Zc: заданий параметр компілятора. В іншому разі не визначено.