正文

C# 语言规范--2.5.3 声明指令(侍续)2006-09-04 10:11:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/vc2006/18248.html

分享到:

声明指令用于定义或取消定义条件编译符号。

pp-declaration:(pp 声明:)
whitespaceopt   #   whitespaceopt   define   whitespace   conditional-symbol   pp-new-line(空白可选   #   空白可选   define   空白   条件符号   pp 新行)
whitespaceopt   #   whitespaceopt   undef   whitespace   conditional-symbol   pp-new-line(空白可选   #   空白可选   undef   空白   条件符号   pp 新行)
pp-new-line:(pp 新行:)
whitespaceopt   single-line-commentopt   new-line(空白可选   单行注释可选   新行)

#define 指令的处理使给定的条件编译符号成为已定义的(从跟在指令后面的源代码行开始)。类似地,对 #undef 指令的处理使给定的条件编译符号成为未定义的(从跟在指令后面的源代码行开始)。

源文件中的任何 #define#undef 指令都必须出现在源文件中第一个“标记”(第 2.4 节)的前面,否则将发生编译时错误。直观地讲,#define#undef 指令必须位于源文件中所有“实代码”的前面。

示例:

#define Enterprise
#if Professional || Enterprise
   #define Advanced
#endif
namespace Megacorp.Data
{
   #if Advanced
   class PivotTable {...}
   #endif
}

是有效的,这是因为 #define 指令位于源文件中第一个标记(namespace 关键字)的前面。

下面的示例产生编译时错误,因为 #define 指令在实代码后面出现:

#define A
namespace N
{
   #define B
   #if B
   class Class1 {}
   #endif
}

#define 指令可用于重复地定义一个已定义的条件编译符号,而不必对该符号插入任何 #undef。下面的示例定义一个条件编译符号 A,然后再次定义它。

#define A
#define A

#undef 指令可用于取消定义一个本来已经是未定义的条件编译符号。下面的示例定义一个条件编译符号 A,然后两次取消定义该符号;第二个 #undef 没有作用但仍是有效的。

#define A
#undef A
#undef A
http://www.bc-cn.net/Article/net/cs/jc/200511/1128.html

阅读(1709) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册