Visual Basic 中的条件编译

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

例如,你可能想要编写调试语句来比较同一编程任务的不同方法的速度,或者你可能希望将应用程序本地化为多种语言。 条件编译语句设计为在编译时运行,而不是在运行时运行。

表示使用 #If...Then...#Else 指令对代码块进行条件编译。 例如,若要从同一源代码创建同一应用程序的法语和德语版本,可以使用预定义的常量 FrenchVersionGermanVersion#If...Then 语句中嵌入特定于平台的代码段。 下面的示例展示了如何:

#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)
命令行声明会重写在“项目设计器”中输入的声明,但不会清除它们。 “项目设计器”中设置的参数对后续编译仍然有效。
在代码本身中编写常量时,没有严格的规则来规定常量的位置,因为常量的范围是声明常量的整个模块。
在代码中设置常量
- 将常量放在使用常量的模块的声明块中。 这有助于使代码井然有序且易于阅读。
Title 说明
程序结构和代码约定 提供使代码易于阅读和维护的建议。

参考

#Const 指令

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

-define (Visual Basic)