Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Определяет символ предварительной обработки для исходного файла.
Синтаксис
/D[ имя[#=| [{ строковое | число }] ]
/D[ имя[#=| [{ строковое | число }] ]""
Замечания
Этот символ можно использовать совместно с #if или #ifdef для условной компиляции исходного кода. Определение символа остается в силе, пока оно не будет переопределено в коде или не определено в коде директивой #undef .
/D имеет тот же эффект, что и директива #define в начале файла исходного кода. Разница заключается в том, что /D разделит кавычки в командной строке, а директива #define сохраняет их. Пробелы между символом и символом могут быть пробелами /D . Между символом и знаком равенства не может быть пробел или между знаком равенства и любым назначенным значением.
По умолчанию значение, связанное с символом, равно 1. Например, выражение /D name будет эквивалентно /D name=1. В примере в конце этой статьи отображается определение TEST печати 1.
Компиляция путем использования /D name= приводит к тому, что имя символа не имеет связанного значения. Хотя символа все равно можно использовать для условной компиляции кода, в остальных случаях использование символа будет бесполезным. В примере при компиляции с помощью /DTEST=возникает ошибка. Это поведение напоминает использование #define со значением или без значения.
Этот /D параметр не поддерживает определения макросов, например функции. Чтобы вставить определения, которые не могут быть определены в командной строке, рассмотрите /FI параметр компилятора компилятора (принудительное включение имени).
Для определения дополнительных символов можно использовать /D несколько раз в командной строке. Если один и тот же символ определен несколько раз, используется последнее определение.
Эта команда определяет символ DEBUG в файле TEST.c:
CL /DDEBUG TEST.C
Эта команда удаляет все вхождения ключевого слова __far из файла TEST.c:
CL /D __far= TEST.C
Переменная среды CL не может быть задана строкой, содержащей знак равенства. Чтобы использовать /D вместе с переменной CL среды, необходимо указать знак номера (#) вместо знака равенства:
SET CL=/DTEST#0
При определении символа предварительной обработки в командной строке необходимо учитывать правила синтаксического разбора компилятора и правила синтаксического разбора оболочки. Например, чтобы определить символ предварительной обработки знака процента (%) в программе, укажите два символа знака процента (%%) в командной строке. Если указать только один, возникает ошибка синтаксического анализа.
CL /DTEST=%% TEST.C
Установка данного параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно Окна свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойств сборки в Visual Studio.
Выберите страницу свойств>конфигурации C/C++>Preprocessor.
Откройте раскрывающееся меню свойства "Определения препроцессора" и нажмите кнопку "Изменить".
В диалоговом окне "Определения препроцессора" добавьте, измените или удалите одно или несколько определений, по одной строке. Нажмите ОК, чтобы сохранить внесенные изменения.
Не нужно включать префикс параметра "/D" в определения, указанные здесь. На странице свойств определения разделяются точкой с запятой (
;).
Установка данного параметра компилятора программным способом
- См. раздел PreprocessorDefinitions.
Пример
// cpp_D_compiler_option.cpp
// compile with: cl /EHsc /DTEST cpp_D_compiler_option.cpp
#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
См. также
Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC
/FI (Имя принудительно включаемого файла)
/U, /u (неубедимые символы)
#undef Директива (C/C++)
#define Директива (C/C++)