本帖最后由 吴泉水 于 2011-12-14 11:39 编辑
c#有许多名为预处理器指令。这些指令从来不会编译为可执行代码中的命令,但会影响编译的各个方面。预处理指令在编译时调用的,预处理器指令告诉c#编译器要编译哪些代码,并指出如何处理特定的错误和警告。预处理器指令的开头都有符号#。
c#中并没有一个像c++那样的独立预处理器,所谓的预处理器指令仍由编译器处理。
1.#define和#undef
#define不像c++中那样可以定义常数值,#define本身并无大用,需要配合#if指令使用。
2.#if,#elif,#else和#endif
#if用于条件指令,测试一个或多个符号以查看它们是否为true,如果结果确实是true,则编译器将计算位于#if与最近#endif指令之间的所有代码。所使用的表达式需要#define预定义
#define c
#if c
Console.WriteLine("c is define");
#endif
3.#warning 和#error
编译器遇到它们时会分别产生警告和错误信息。如果遇到#warning指令,会向用户显示#warning指令后面的文本,而如果编译器遇到#error,则会立即退出编译,不会产生IL代码。
4.#region和#endregion
该指令用于把一段代码标记为有指定名称的一个块。这两个指令不会影响编译过程,可以使得代码显示布局更为清晰。
5.#line
该指令可以用于改变编译器在警告和错误信息中显示的文件名和行号信息。如果编写时,要使用某些软件包改变键入的代码,就可以使用这个指令。
6.其他预处理器指令
#pragma为编译器提供特殊的指令,说明如何编译包含杂注的文件。#pragma warning可启用或禁用某些警告。#pragma checksum用于生成源文件的校验各,以帮助调试ASP.NET页。 |