#If Win32 Then
Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x _
As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As _
Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As _
Long, ByVal dwRop As Long) As Long
#Else
Declare Function BitBlt Lib "GDI" (ByVal hDestDC%, ByVal X%, ByVal _
Y%, ByVal nWidth%, ByVal nHeight%, ByVal hSrcDC%, ByVal XSrc%, _
ByVal YSrc%, ByVal dwRop&) As Integer
#End If
大家都知道C语言中的编译预处理,这是一项十分实用的功能。其实VB中也有类似于C语言编译预处理中的条件编译语句——#If语句。
语法如下:
#If 条件 Then
程序语句
[#ElseIf 条件n Then
程序语句]
[#Else
程序语句]
#End If
大家用IF语句去理解这个语句就行了,不过这个语句是告诉编译器编译哪一部分的代码,条件编译通常用来编译不同平台上的同一个程序。也可以用来避免调试程序代码出现在可执行程序中。
#Const用于在编译时被编译器使用定义一个编译变量,它要与#If ... 语句一起使用,从而决定哪些代码被包含于编译后的程序中。在下面的代码中,第二个MsgBox语句被完整地从代码中移去,这就使编译后的程序变得小了些。
#Const DEBUG_VERSION = True
#If DEBUG_VERSION Then
MsgBox "This is a debug version"
#Else
MsgBox "This is the final version"
#End If
Const用于定义一个数值,当遇到它时,Visual Basic将替代为常量符号。比如,下面的代码使用一个常量来创建一个更易读的信息。通常,常量要远远前于使用它的代码之前。
Const MSG = "Hello"
:
MsgBox MSG
注意,你不能按照这种方法使用#Const,比如,下面的代码是错误的:
#Const MSG = "Hello"
:
MsgBox MSG
最后请注意,在编译时Const数值是不明确的,所以,它们都是默认数值。比如,一个Boolean常量在编译时没有初始化,默认是False,即使你定义常量的数值为True!猜一猜执行下面的代码会显示什么?试一试然后看看你是否想正确了:
Private Sub Form_Load()
#Const A = True
Const B = True
#If A Then
MsgBox "A is True"
#Else
MsgBox "A is False"
#End If
#If B Then
MsgBox "B is True"
#Else
MsgBox "B is False"
#End If
If B Then
MsgBox "B is True"
Else
MsgBox "B is False"
End If
End Sub
所以,编程原则是:
与#If一起配合使用#Const
与If一起配合使用Const
不要混和使用2者
#If...#Then...#End If
这个不是用于不同的硬件平台的,
是用在不同操作系统的编译.(软件平台)
不同的硬件应该用普通的if语句就可以了
预处理语句是在生成exe前就要被执行判断的。。
就比如
a=20
#If a>0 Then
print "aaa"
#Else
print "bbb"
#End If
这样就会在窗体上输出 bbb,去掉了#号后,反而是输出 aaa,请问这是怎么回事?这里的#号有什么作用的?我在网上搜索不到这方面的教程啊。还望各位前辈多指教,谢谢!
比如
#Const a = 20
#If a > 0 Then
Print "aaa"
#Else
Print "bbb"
#End If
这个是编译的时候进行的判断...这样你可以写一个代码然后编译时改变#const的某个值就可以编译出不同的程序了...以适应不同的系统或者需求...
#Const和#If是一个性质
#Const 指令
用来定义 Visual Basic 的条件编译常数。
语法
#Const constname = expression
#Const 编译指令的语法具有以下几个部分:
constname:必要;Variant (String)。常数;名称要遵守变量命名的约定。
expression:必要。文字、其他的条件编译常数或包含除了 Is 以外的算术或逻辑运算符的任意组合。
说明
条件编译常数在其出现的模块中总是 Private。不可能利用 #Const 指令建立 Public 编译常数。Public 编译常数只能在用户接口中建立。
在 expression 中只能使用编译常数及文字。使用一个用 Const 定义的标准常数,或者使用一个未定义的常数,都会导致错误发生。反之,用 #Const 关键字定义的常数也只能用于条件编译。
不管条件编译常数在程序中的位置如何,都总是在模块级别中进行计算。 |