当前位置:首页 > 全部子站 > 备课网 > 学院

C# 语言标准--2.5 预处理指令

来源:长理培训发布时间:2017-08-20 20:11:29

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

pp-directive:(pp 指令:)
pp-declaration(pp 声明)
pp-conditional(pp 条件)
pp-line(pp 行)
pp-diagnostic(pp 诊断)
pp-region(pp 区域)

下面是可用的预处理指令:

  • #define 和 #undef,分别用于定义和取消定义条件编译符号(第 2.5.3 节)。
  • #if#elif#else 和 #endif,用于按条件跳过源代码中的节(第 2.5.4 节)。
  • #line,用于控制行号(在发布错误和警告信息时使用)(第 2.5.7 节)。
  • #error 和 #warning,分别用于发出错误和警告(第 2.5.5 节)。
  • #region 和 #endregion,用于显式标记源代码中的节(第 2.5.6 节)。

预处理指令总是占用源代码中的单独一行,并且总是以 # 字符和预处理指令名称开头。# 字符的前面以及 # 字符与指令名称之间可以出现空白符。

包含 #define#undef#if#elif#else#endif 或 #line 指令的源代码行可以用单行注释结束。在包含预处理指令的源行上不允许使用带分隔符的注释(/* */ 样式的注释)。

预处理指令既不是标记,也不是 C# 句法文法的组成部分。但是,可以用预处理指令包含或排除标记序列,并且可以以这种方式影响 C# 程序的含义。例如,编译后,程序:

#define A



#undef B



class C



{



#if A



   void F() {}



#else



   void G() {}



#endif



#if B



   void H() {}



#else



   void I() {}



#endif



}

产生与下面的程序完全相同的标记序列:

class C



{



   void F() {}



   void I() {}



}

因此,尽管上述两个程序在词法分析中完全不同,但它们在句法分析中是相同的。

责编:杨粟梅

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部