什么命名约束适用于C#条件编译符号?

时间:2016-05-09 04:40:25

标签: c# syntax conditional-compilation

什么规则适用于C#中的条件编译符号的名称?

我已咨询过#define documentation/define compiler switch documentationC# language specification。 #define和/ define文档只是说您可以定义符号名称,并且该符号名称不会与变量名称冲突。语言规范说有一个"条件符号"令牌,但似乎没有评论什么构成有效的符号令牌 - 我可能不会在正确的地方寻找?

  • 条件编译符号可以以数字开头吗?
  • 它们可以包含特殊字符,例如。 (例如,用于与版本号相关的符号)?不间断的空间怎么样?
  • #,{},[]等字符怎么样?

编辑:指向权威文档的链接很有用

1 个答案:

答案 0 :(得分:3)

符号定义可以在规范的第2.5.1节中找到:

  

2.5.1条件编译符号

     

#if#elif#else#endif指令提供的条件编译功能是通过预处理表达式(第2.5.2节)和条件控制的编译符号。

     

条件符号
  除truefalse

之外的任何标识符或关键字

这反映在same sectiongrammar下的§C.1.10中,但请注意,在线提供的规范适用于该语言的旧版本,不应使用作为参考。您可以在C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC#\ Specifications \ 1033或download中找到最新的可用规范(显然,在撰写本文时它仍然是C#5.0)。

identifier-or-keyword 的定义可以在§B.1.6标识符中找到。