`
coconut_zhang
  • 浏览: 531461 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

C#编程中的预处理指令

阅读更多

C#, 虽然编译器没有单独的预处理器,但在处理预处理指令时如同存在一个单独的预处理器;这些指令用于辅助条件编译。与 C C++ 指令不同,不能使用这些指令创建宏。

预处理器指令必须是行上的唯一指令。

 

C# 语言的预处理器指令:

#if

#else

#elif

#endif

# define

#undef

#warning

#error

#line

#region

#endregion

#pragma

#pragma warning

#pragma checksum

 

在以上这些预处理指令中,值得注意的有3:

#line 使您可以修改编译器的行号以及(可选)错误和警告的文件名输出。下面的示例说明如何报告与行号关联的两个警告。#line 200 指令强迫行号为 200(尽管默认值为 #7)。另一行 (#9) 作为默认 #line 指令的结果跟在通常序列后。

#line 指令可能由生成过程中的自动中间步骤使用。例如,如果行从原始的源代码文件中移除,但是您仍希望编译器基于文件中的原始行号生成输出,则可以移除行,然后用 #line 模拟原始行号。

#line hidden 指令对调试器隐藏若干连续的行,这样当开发人员在逐句通过代码时,将会跳过 #line hidden 和下一个 #line 指令(假定它不是另一个 #line hidden 指令)之间的所有行。此选项也可用来使 ASP.NET 能够区分用户定义的代码和计算机生成的代码。尽管 ASP.NET 是此功能的主要使用者,但很可能将有更多的源生成器使用它。

#line hidden 指令不会影响错误报告中的文件名或行号。即,如果在隐藏块中遇到错误,编译器将报告当前文件名和错误的行号。

#line filename 指令指定您希望出现在编译器输出中的文件名。默认情况下,使用源代码文件的实际名称。文件名必须括在双引号 ("") 中。

源代码文件可以具有 #line 指令的任何编号。

 

#pragma 用于给编辑器提供特殊的指令,说明如何编译包含杂注的文件。

主要应用

#pragma warning disable warning-list

#pragma warning restore warning-list

warning-list

警告编号的逗号分隔列表。只输入数字,不包括前缀 "CS"

当没有指定警告编号时,disable 禁用所有警告,而 restore 启用所有警告。

 

还有一个是#error指令将警告视为错误:

#error warning disable warning-list

#error warning restore warning-list

分享到:
评论

相关推荐

    常用C/C++预处理指令详解

    预处理指令提供按条件跳过源文件中的节、报告错误和警告条件,以及描绘源代码...使用术语“预处理指令”只是为了与 C 和 C++ 编程语言保持一致。在 C# 中没有单独的预处理步骤;预处理指令按词法分析阶段的一部分处理。

    Visual C#.NET从入门到精通

    第4章 判断、循环和预处理指令 第5章 面向对象的编程 第6章 类和对象 第7章 派生类 第8章 接口 第9章 字符串、日期、时间和时间段 第10章 数组和索引器 第11章 集合 第12章 委派和事件 第13章 异常与调试 第二部分 ...

    C#精髓中文版

    预处理指令 xml文档 第三章.net框架编程 公用类型 数学 字符串 集合 正则表达式 输入/输出 联网 线程 配件 反射 定制属性信息 自动内存管理 同本机dll互操作 与com互操作 第四章 bcl综述 核心...

    C#4.0权威指南.pd

    语法篇对C#的语法进行了系统而全面的讲解,包括标识符和关键字、变量和常量、类型以及类型转换、表达式和运算符、语句、方法、类、继承、多态、接口、结构、枚举、委托、事件、泛型、数组、集合、字符串和正则表达式...

    C# 4.0权威指南-姜晓东

    空间和程序集、预处理指令、元数据和特性、异步编程和多线程编程、i/o操作、xml处理增强的com interop和并行编程等;附录部分讲解了visual studio 2010的安装、配置和使用,以便于没有经验的初[0学0]者能快速搭建...

    微软C#语言规范,C#语言教程中文版

    2.5 预处理指令 46 2.5.1 条件编译符号 47 2.5.2 预处理表达式 48 2.5.3 声明指令 49 2.5.4 条件编译指令 49 2.5.5 诊断指令 52 2.5.6 区域指令 52 2.5.7 行指令 53 2.5.8 Pragma 指令 53 2.5.8.1 Pragma warning 54...

    Programming C#(第4版)(中文版)part2

    预处理指令 63 第4章 类与对象 67 定义类 68 创建对象 73 使用静态成员 80 销毁对象 85 传递参数 88 重载方法和构造方法 94 用属性封装数据 97 只读字段 101 第5章 继承与多态 104 具体化与一般化 104 继承 107 多态...

    Programming C#(第4版)(中文版)part1

    预处理指令 63 第4章 类与对象 67 定义类 68 创建对象 73 使用静态成员 80 销毁对象 85 传递参数 88 重载方法和构造方法 94 用属性封装数据 97 只读字段 101 第5章 继承与多态 104 具体化与一般化 104 继承 107 多态...

    C#5.0本质论第四版(因文件较大传的是百度网盘地址)

    3.9 C#预处理指令 97 3.9.1 排除和包含代码 98 3.9.2 定义预处理符号 98 3.9.3 生成错误和警告 99 3.9.4 关闭警告消息 99 3.9.5 nowarn:选项 99 3.9.6 指定行号 100 3.9.7 可视编辑...

    C#微软培训资料

    C#语言在.NET 框架中的作用及其特性 1.1 Microsoft.NET 一场新的革命 1.1.1 什么是.NET 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出...

    Programming C#(第4版)(中文版)part3

    预处理指令 63 第4章 类与对象 67 定义类 68 创建对象 73 使用静态成员 80 销毁对象 85 传递参数 88 重载方法和构造方法 94 用属性封装数据 97 只读字段 101 第5章 继承与多态 104 具体化与一般化 104 继承 107 多态...

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    2.8.3 预处理指令 2.8.4 反射 2.8.5 线程 2.9 本章小结 进阶篇 第3章 ASP.NET 2.0常用服务器控件 3.1 使用基本控件 3.1.1 TextBox控件的应用 3.1.2 Label控件的应用 3.1.3 DropDownList和ListBox控件应用 ...

    亮剑.NET深入体验与实战精要2

    1.5.3 预处理指令,有你更轻松 55 1.6 Visual Studio.NET 2008 实战 58 1.6.1 如何创建ASP.NET项目 58 1.6.2 如何创建Windows项目 61 1.6.3 Visual Studio.NET 2008 操作与使用技巧 61 1.6.4 常见开发调试技巧 66...

    亮剑.NET深入体验与实战精要3

    1.5.3 预处理指令,有你更轻松 55 1.6 Visual Studio.NET 2008 实战 58 1.6.1 如何创建ASP.NET项目 58 1.6.2 如何创建Windows项目 61 1.6.3 Visual Studio.NET 2008 操作与使用技巧 61 1.6.4 常见开发调试技巧 66...

Global site tag (gtag.js) - Google Analytics