1.#if #else #endif
的作用是条件编译已选择的vb代码块
2.从语法上来说。
#if #else #endif不允许与代码行出现在同一行中。
也就是不能象if else endif 这样使用:
if ... then  x=1
else
x=2
end if
这在对.#if #else #endif来说是不允许的

解决方案 »

  1.   

    #If...Then...#Else 指令的作用与 If...Then...Else 语句相同,其差异在于 #If、#Else、#ElseIf,及 #End If 指令没有单独成行的形式,也就是说,在指令所在的那一行,不能有其他代码出现。
        条件编译通常用来编译不同平台上的同一个程序。也可以用来避免调试程序代码出现在可执行程序中。条件编译时被排除的程序代码在最后的可执行文件中被完全略去,所以不会对程序的大小或功能有任何影响。无论结果如何,都要计算所有表达式。所以,在表达式中用到的所有常数都必须加以定义— 任何未定义的常数都会被当作 Empty 来计算取值。
      

  2.   

    up
    用于不同操作系统时用的比较多
    比如9x和NT
      

  3.   

    #If #Else #End If是条件编译,是给编译器看的,如
    #If _Debug = 1 Then
        Private Function Fun(V As Integer) AS Integer
            Fun = V + 1
        End Function
    #Else
        Private Function Fun(V As Long) AS Long
            Fun = V + 1
        End Function
    #End If如果 _Debug = 1 有定义
    则编译器生成前一个函数,第二个函数的语句等于没有,象注释一样。
    相当于:
        Private Function Fun(V As Integer) AS Integer
            Fun = V + 1
        End Function
        'Private Function Fun(V As Long) AS Long
        '    Fun = V + 1
        'End Function
    你想一想
    函数定义可以放在If Else EndIf里吗?
      

  4.   

    再举个例子:
        Dim i AS Integer
    #If Win32 = 1 Then
        Dim j AS Long
    #Else
        Dim j AS Integer
    #End If
        if i = 10 Then : Print i : End If
    如果在工程属性里定义了 Win32 = 1 ,则以上语句在编译器看来是:
        Dim i AS Integer
        Dim j AS Long
        if i = 10 Then : Print i : End If否则,那段语句在编译器看来是:
        Dim i AS Integer
        Dim j AS Integer
        if i = 10 Then : Print i : End If
    看到了吗?
    #If最终在你的程序中是不存在的。它告诉编译器“当某个条件成立时,才编译里面的语句,否则你就当我没有打入这些语句,编译时完全不要管它”