Директива #undef (C/C++)#undef directive (C/C++)

Удаляет имя, ранее созданное с помощью #define, то есть отменяет его определение.Removes (undefines) a name previously created with #define.

СинтаксисSyntax

идентификатор #undef#undef identifier

КомментарииRemarks

Директива #undef удаляет текущее определение идентификатора.The #undef directive removes the current definition of identifier. Следовательно, последующие вхождения идентификатора игнорируются препроцессором.Consequently, subsequent occurrences of identifier are ignored by the preprocessor. Чтобы удалить определение макроса с помощью #undef, укажите только идентификатор макроса, а не список параметров.To remove a macro definition using #undef, give only the macro identifier, not a parameter list.

Можно также применить директиву #undef к идентификатору, не имеющему предыдущего определения.You can also apply the #undef directive to an identifier that has no previous definition. Это гарантирует, что идентификатор не определен.This ensures that the identifier is undefined. Замена макросов не выполняется в инструкциях #undef .Macro replacement isn't performed within #undef statements.

Директива #undef обычно сопряжена с #define директивой для создания области в исходной программе, в которой идентификатор имеет специальное значение.The #undef directive is typically paired with a #define directive to create a region in a source program in which an identifier has a special meaning. Например, определенная функция программы-источника может использовать константы манифестов для определения значений среды, которые не влияют на остальные части программы.For example, a specific function of the source program can use manifest constants to define environment-specific values that do not affect the rest of the program. Директива #undef также работает с #if директивой для управления условной компиляцией исходной программы.The #undef directive also works with the #if directive to control conditional compilation of the source program. Дополнительные сведения см. в разделе директивы #if, #elif, #else и #endif.For more information, see The #if, #elif, #else, and #endif directives.

В следующем примере директива #undef удаляет определения символьной константы и макроса.In the following example, the #undef directive removes definitions of a symbolic constant and a macro. Обратите внимание, что предоставляется только идентификатор макроса.Note that only the identifier of the macro is given.

#define WIDTH 80
#define ADD( X, Y ) ((X) + (Y))
.
.
.
#undef WIDTH
#undef ADD

Блок, относящийся только к системам MicrosoftMicrosoft Specific

Макросы могут быть неопределенными из командной строки с помощью /U параметра, за которым следуют имена макросов, которые должны быть неопределенными.Macros can be undefined from the command line using the /U option, followed by the macro names to be undefined. Результат выполнения этой команды эквивалентен последовательности #undef операторов имени макроса в начале файла.The effect of issuing this command is equivalent to a sequence of #undef macro-name statements at the beginning of the file.

Завершение блока, относящегося только к системам МайкрософтEND Microsoft Specific

См. такжеSee also

Директивы препроцессораPreprocessor directives