-define (параметры компилятора C#)-define (C# Compiler Options)

Параметр -define определяет name как символ во всех файлах исходного кода программы.The -define option defines name as a symbol in all source code files your program.

СинтаксисSyntax

-define:name[;name2]  

АргументыArguments

name, name2name, name2
Имя одного или нескольких символов, которые требуется определить.The name of one or more symbols that you want to define.

ПримечанияRemarks

Параметр компилятора -define действует так же, как директива препроцессора #define, однако, в отличие от нее, применяется ко всем файлам проекта.The -define option has the same effect as using a #define preprocessor directive except that the compiler option is in effect for all files in the project. Символ остается определенным в файле исходного кода до тех пор, пока определение не будет отменено с помощью директивы #undef в файле исходного кода.A symbol remains defined in a source file until an #undef directive in the source file removes the definition. При использовании параметра -define директива #undef в одном файле не действует для других файлов исходного кода в проекте.When you use the -define option, an #undef directive in one file has no effect on other source code files in the project.

Вы можете использовать символы, созданные этим параметром, с директивами #if, #else, #elif и #endif для условной компиляции исходных файлов.You can use symbols created by this option with #if, #else, #elif, and #endif to compile source files conditionally.

-d является краткой формой -define.-d is the short form of -define.

Вы можете определить несколько символов с помощью -define, разделяя их имена точкой с запятой или запятой.You can define multiple symbols with -define by using a semicolon or comma to separate symbol names. Например:For example:

-define:DEBUG;TUESDAY  

Компилятор C# сам по себе не определяет символы и макросы, которые можно использовать в исходном коде. Все такие определения задаются пользователем.The C# compiler itself defines no symbols or macros that you can use in your source code; all symbol definitions must be user-defined.

Примечание

C# #define не поддерживает присваивание значения символу, как, например, в языке C++.The C# #define does not allow a symbol to be given a value, as in languages such as C++. Например, с помощью директивы #define нельзя создать макрос или определить константу.For example, #define cannot be used to create a macro or to define a constant. Чтобы определить константу, используйте переменную enum.If you need to define a constant, use an enum variable. Для создания макросов в стиле C++ необходимо использовать альтернативные способы, например универсальные шаблоны.If you want to create a C++ style macro, consider alternatives such as generics. Поскольку макросы по своей природе подвержены ошибкам, в C# они запрещены, однако вместо них предлагаются более безопасные альтернативы.Since macros are notoriously error-prone, C# disallows their use but provides safer alternatives.

Установка данного параметра компилятора в среде разработки Visual StudioTo set this compiler option in the Visual Studio development environment

  1. Откройте страницу Свойства проекта.Open the project's Properties page.

  2. На вкладке Сборка введите символ, который требуется определить, в поле Символы условной компиляции.On the Build tab, type the symbol that is to be defined in the Conditional compilation symbols box. Например, для представленного ниже примера кода просто введите xx в текстовое поле.For example, if you are using the code example that follows, just type xx into the text box.

Сведения об установке этого параметра компилятора программными средствами см. в разделе DefineConstants.For information on how to set this compiler option programmatically, see DefineConstants.

ПримерExample

// preprocessor_define.cs  
// compile with: -define:xx  
// or uncomment the next line  
// #define xx  
using System;  
public class Test   
{  
    public static void Main()   
    {  
        #if (xx)   
            Console.WriteLine("xx defined");  
        #else  
            Console.WriteLine("xx not defined");  
        #endif  
    }  
}  

См. такжеSee also