`
coconut_zhang
  • 浏览: 541870 次
  • 性别: 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#编程中,预处理指令(Preprocessor Directives)是一种强大的工具,它们允许程序员在编译时控制代码的行为。这些指令不会出现在最终的编译结果中,而是用于指导编译器如何处理源代码。本篇文章将深入探讨C#...

    C#编写的C#语言的预处理

    对于C#语言来说,虽然它的预处理指令与C/C++有所不同,但同样提供了类似的功能,如宏定义、条件编译等。本篇文章将深入探讨C#中的预处理及其相关知识点。 首先,我们来了解一下什么是预处理。预处理是在编译器真正...

    c#预处理指令分析

    C#预处理指令是编程语言中的重要组成部分,它们在代码编译阶段起着关键作用,允许程序员对编译过程进行控制。预处理指令不会成为最终的可执行代码,但它们可以影响编译器如何处理源代码。在C#中,预处理指令主要用于...

    C#编译预处理和调试技术-中文版-PDF

    在编程领域,C#是一种广泛使用的面向对象的编程语言,尤其在Windows平台和.NET框架下。本资源聚焦于C#的编译预处理和调试技术,对于中级以上的开发者来说,理解并掌握这些技术是提高效率和解决问题的关键。下面将...

    微软C#编程指导书

    - **预处理指令**:控制编译过程的特殊语句,如条件编译、宏定义等。 #### 2. 基本概念 - **应用程序启动与终止**:程序的生命周期管理,从main()方法开始执行,到所有资源释放结束。 - **声明与成员**:变量、...

    C#预处理指令之#line,#pragma warning 详细解析

    总的来说,`#line`和`#pragma warning`指令在C#编程中提供了强大的灵活性,允许开发者对编译过程进行更精细的控制,以优化错误报告、调试体验和代码质量。正确使用这些指令,可以在不影响程序功能的同时,提升开发...

    C#编程及应用程序开发(第2版)电子课件

    8. **第14章 编译预处理和调试测试技术**:涵盖宏定义、条件编译指令,以及如何使用调试工具进行问题定位和性能优化。 9. **第6章 程序控制语句**:介绍流程控制结构,如条件语句(if-else)、循环(for, while, ...

    C#官方中文文档

    - 出现了“#if, #elif, #else, #endif”等预处理指令,这表明文档介绍了C#中的编译指令,用于条件编译,允许编译器根据特定条件包含或排除代码块。 - “#line”指令的提及说明文档可能讲解了如何在代码中修改行号...

    C#和C++的区别理解.pdf

    但C#的预处理指令少得多,因为C#的其它语言特性使得这些指令不再重要。 枚举也是C#和C++的一种区别。C#的枚举比C++中枚举的功能更为广泛。它们在权限范围内的语法结构很成熟,可支持不同的属性与方法。 析构函数是...

    C#和C++的区别理解.docx

    在预处理指令方面,C#包含一些预处理指令,它的语法和C++一样。但C#的预处理指令少得多,因为C#的其它语言特性使得这些指令不再重要。 在枚举方面,C#的枚举比C++中枚举的功能更为广泛。它们在权限范围内的语法结构...

    C#上机考试题目及答案

    5. C#程序中,下列哪些预处理指令用于条件编译 解答:A、#if 在C#中,#if是预处理指令,用于条件编译。 6. 以下叙述正确的是 解答:B、一个类可以实现多个接口 在C#中,一个类可以实现多个接口,但是接口中不能...

    C#语言定义文档中文版.pdf

    C#使用预处理指令来控制编译过程,比如条件编译指令和区域指令,这使得我们可以在源代码中设置条件编译符号,并根据符号的值来编译不同的代码部分。 词法结构部分详细介绍了C#程序的构成,包括文法表示法、标记、...

    Visual C#.NET从入门到精通

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

Global site tag (gtag.js) - Google Analytics