ylbtech-Docs-.NET-C#-指南-语言参考-预处理器指令:#line(C# 参考)
1.返回顶部
1、

#line(C# 参考)

  • 2015/07/20

借助 #line可修改编译器的行号及(可选)用于错误和警告文件名输出

以下示例演示如何报告与行号相关联的两个警告。 #line 200 指令将下一行的行号强制设为 200(尽管默认值为 #6);在执行下一个 #line 指令前,文件名都会报告为“特殊”。 #line default 指令将行号恢复至默认行号,这会对上一指令重新编号的行进行计数。

C#复制
class MainClass
{
static void Main()
{
#line 200 "Special"
int i;
int j;
#line default
char c;
float f;
#line hidden // numbering not affected
string s;
double d;
}
}

编译产生以下输出:

console复制
Special(,): warning CS0168: The variable 'i' is declared but never used
Special(,): warning CS0168: The variable 'j' is declared but never used
MainClass.cs(,): warning CS0168: The variable 'c' is declared but never used
MainClass.cs(,): warning CS0168: The variable 'f' is declared but never used
MainClass.cs(,): warning CS0168: The variable 's' is declared but never used
MainClass.cs(,): warning CS0168: The variable 'd' is declared but never used

备注

可在生成过程的自动、中间步骤中使用 #line 指令。 例如,如果已从原始源代码文件中删除行,但仍希望编译器基于文件中的原始行号生成输出,可在删除行后,使用 #line 来模拟原始行号。

#line hidden 指令能对调试程序隐藏连续行,当开发者逐行执行代码时,介于 #line hidden 和下一 #line 指令(假设它不是其他 #line hidden 指令)间的任何行都将被跳过。 还可通过此选项允许 ASP.NET 区分用户定义和计算机生成的代码。 虽然此功能主要用于 ASP.NET,但可能更多的源生成器会利用此功能。

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

#line filename 指令可指定要在编译器输出中显示的文件名。 默认情况下,将使用源代码文件的实际名称。 该文件名必须以双引号 ("") 引起来,且必须位于行号之后。

源代码文件中可包含任意数目的 #line 指令。

示例 1

下列示例演示调试程序如何忽略代码中的隐藏行。 运行示例时,它将显示三行文本。 但是,如果按照示例所示设置断点、并按 F10 逐行执行代码,可观察到调试程序忽略隐藏行。 另请注意,即使在隐藏行设置断点,调试程序仍将忽略它。

C#复制
// preprocessor_linehidden.cs
using System;
class MainClass
{
static void Main()
{
Console.WriteLine("Normal line #1."); // Set break point here.
#line hidden
Console.WriteLine("Hidden line.");
#line default
Console.WriteLine("Normal line #2.");
}
}

请参阅

2、
2.返回顶部
 
3.返回顶部
 
4.返回顶部
 
5.返回顶部
1、
2、
 
6.返回顶部
 
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

最新文章

  1. url传参中文乱码
  2. ARC的原理详解
  3. 从BATS交易所获取空头头寸
  4. Android在Service中显示Dialog
  5. 如何查看postfix的版本
  6. 网页端启动WinForm
  7. java基础(十三)常用类总结(三)
  8. HDU 5424 Rikka with Graph II
  9. pl/sql oracle
  10. 基于Bootstrap的步骤引导html页面
  11. linux apt-cache使用方法
  12. springboot学习(三)——http序列化/反序列化之HttpMessageConverter
  13. Leetcode 4
  14. 精选!15 个必备的 VSCode 插件(前端类)
  15. 微信小程序页面返回传参的问题
  16. sine曲线向前运动
  17. Android org.apache.http.*找不到
  18. windows8.1 初体验
  19. (5)调度器(scheduler)
  20. sparksql连接mysql

热门文章

  1. chrome浏览器的跨域设置
  2. redis-4.0.14 cluster 配置实战
  3. docker学习(六) Docker命令查询
  4. sping boot 笔记 哎呦不错哦
  5. Codeforces Round #600 (Div. 2) D题【并查集+思维】
  6. 四十七.iptables防火墙 filter表控制 扩展匹配 nat表典型应用
  7. openssl使用以及C#加密和数字签名
  8. Unity的资源加载以及AssetBundle的一些坑
  9. IDEA构建支持cdh版本和scala的maven项目注意事项
  10. Java学习日记基础篇(七) —— 数组、排序