Поделиться через


Определения препроцессора (/D)

Обновлен: Ноябрь 2007

Определяет символ препроцессора для вашего исходного файла.

 /Dname[= | # [{string | number}] ]

Заметки

Можно использовать этот символ с #if или #ifdef для условной компиляции исходного кода. Определение символа остается в силе до тех пор, пока не встретится переопределение в файле источника или символ, не определенный в источнике при помощи директивы #undef.

/D дает точно такой же эффект, как и использование директивы #define в начале исходного файла. Но /D снимает кавычки в командной строке, и #define возвращает их.

По умолчанию значение, связанное с символом, будет равно 1. Следовательно, /DTEST является эквивалентным /DTEST=1. В следующем примере определение TEST показано равным 1.

Компиляция /Dname= связана с символом, не имеющим связанного значения. Если использование символа все еще возможно при условной компиляции кода, в остальных случаях использование символа будет бесполезным. Например, в простой программе, скомпилированной при помощи /DTEST=, будет возникать ошибка компиляции. Это поведение похоже на использование #define с или без значения.

Следующая команда определяет символ DEBUG в файле TEST.c:

CL /DDEBUG  TEST.C

Следующая команда удаляет все вхождения ключевого слова __far из файла TEST.c:

CL /D__far=  TEST.C

Нельзя установить переменную CL среды равной строке, которая содержит только один знак равенства. Чтобы использовать /D с переменной CL среды, нужно указать знак решетки вместо знака равенства:

SET CL=/DTEST#0

Установка параметра компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Открытие свойств страниц проекта.

  2. Выберите папку C/C++.

  3. Выберите страницу свойств Препроцессор.

  4. Измените значение свойства Определения препроцессора.

Установка данного параметра компилятора программным способом

Пример

// cpp_D_compiler_option.cpp
// compile with: /DTEST
#include <stdio.h>

int main( )
{
    #ifdef TEST
        printf_s("TEST defined %d\n", TEST);
    #else
        printf_s("TEST not defined\n");
    #endif
}

TEST defined 1

См. также

Ссылки

Параметры компилятора

Настройка параметров компилятора

Параметры /U и /u (отмена определения символа)

The #undef Directive

The #define Directive