Visual Basic 中的条件编译

条件编译中,程序中的特定代码块有选择性地编译,而其他代码块则被忽略。

例如,你可能想要编写调试语句,这些语句将不同方法的速度与同一编程任务进行比较,或者可能需要本地化多种语言的应用程序。 条件编译语句旨在在编译期间运行,而不是在运行时运行。

您可以使用 #If...Then...#Else 指令来为代码块指定条件编译。 例如,要使用同一源代码创建该应用程序的法语和德语版本,请在#If...Then语句中使用预定义常量FrenchVersion嵌入特定于平台的代码段GermanVersion。 以下示例演示如何:

#If FrenchVersion Then
   ' <code specific to the French language version>.
#ElseIf GermanVersion Then
   ' <code specific to the German language version>.
#Else
        ' <code specific to other versions>.
#End If

如果将条件编译常量的值 FrenchVersion 设置为 True 编译时,将编译法语版本的条件代码。 如果将常量GermanVersion的值True设置为,编译器将使用德语版本。 如果两者均未设置为 True,则最后 Else 一个块中的代码将运行。

注释

如果代码不是当前分支的一部分,则编辑代码和使用条件编译指令时,自动完成功能将不起作用。

声明条件编译常量

可以通过以下三种方式之一设置条件编译常量:

  • 项目设计器

  • 使用命令行编译器时在命令行中

  • 在代码中

条件编译常量具有特殊范围,不能从标准代码访问。 条件编译常量的范围取决于其设置方式。 下表列出了使用上述三种方式中声明的常量的范围。

如何设置常量 常量的范围
项目设计器 项目中的所有文件均可公开
命令行 对于传递给命令行编译器的所有文件设置为公开可见。
#Const 代码中的语句 对在其中声明它的文件私有
在项目设计器中设置常量
- 在创建可执行文件之前,请按照“管理项目”和“解决方案属性”中提供的步骤在项目设计器中设置常量。
在命令行中设置常量
- 使用 -d 开关输入条件编译常量,如以下示例所示:
vbc MyProj.vb /d:conFrenchVersion=–1:conANSI=0
-d 开关和第一个常量之间不需要空格。 有关详细信息,请参阅 -define (Visual Basic)。
命令行声明会替代在 项目设计器中输入的声明,但不清除它们。 项目设计器中设置的参数对于后续编译仍然有效。
在代码本身中编写常量时,没有关于其放置的严格规则,因为它们的范围是声明它们的整个模块。
在代码中设置常量
- 将常量放置在使用的模块的声明块中。 这有助于使代码保持井然有序且更易于阅读。
标题 DESCRIPTION
程序结构和代码约定 提供有关使代码易于阅读和维护的建议。

参考文献

#Const 指令

#If...Then...#Else 指令

-define (Visual Basic)