Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Определяет символ предварительной обработки для исходного файла.
Синтаксис
/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++)