预处理指令(#define,#if,#elif,#endif)有什么用处,怎样使用,可否举一个简单的例子。谢谢!(得到答案就结)

rocandroc 2003-09-11 03:07:50
如题
...全文
376 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihonggen0 2003-09-11
  • 打赏
  • 举报
回复
ms-help://MS.VSCC/MS.MSDNVS.2052/csspec/html/vclrfcsharpspec_2_5.htm

ms-help://MS.VSCC/MS.MSDNVS.2052/csspec/html/vclrfcsharpspec_2_5_4.htm
lihonggen0 2003-09-11
  • 打赏
  • 举报
回复
下面是可用的预处理指令:

#define 和 #undef,用于定义和取消定义条件编译符号(第 2.5.3 节)。
#if、#elif、#else 和 #endif,用于按条件跳过源代码中的节(第 2.5.4 节)。
#line,用于控制为错误和警告发出的行号(第 2.5.5 节)。
#error 和 #warning,用于发出错误和警告(第 2.5.6 节)。
#region 和 #endregion,用于显式标记源代码中的节(第 2.5.7 节)。
预处理指令总是占用源代码中的单独一行,并且总是以 # 字符和预处理指令名称开头。# 字符的前面以及 # 字符与指令名称之间可以出现空白。

包含 #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() {}
}
因此,尽管两个程序在词法上完全相同,但它们在句法上是相同的。

lyrixliu 2003-09-11
  • 打赏
  • 举报
回复
#define DEBUG
#define VC_V7
using System;
public class MyClass
{
public static void Main()
{

#if (DEBUG && !VC_V7)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && VC_V7)
Console.WriteLine("VC_V7 is defined");
#elif (DEBUG && VC_V7)
Console.WriteLine("DEBUG and VC_V7 are defined");
#else
Console.WriteLine("DEBUG and VC_V7 are not defined");
#endif
}
}

通过#与编译指令,可以实现一些判断,可以用命令行编译时指定参数
rocandroc 2003-09-11
  • 打赏
  • 举报
回复
up
rocandroc 2003-09-11
  • 打赏
  • 举报
回复
能举一个例子吗、
谢谢
_weiKun_ 2003-09-11
  • 打赏
  • 举报
回复
这是计算机的预调试指令

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧