#if、#else、#end if 中的井号是啥意思?

Posted

技术标签:

【中文标题】#if、#else、#end if 中的井号是啥意思?【英文标题】:What do the hash signs in #if, #else, #end if mean?#if、#else、#end if 中的井号是什么意思? 【发布时间】:2011-09-13 14:33:06 【问题描述】:

我正在编写代码来检查文件是否可以从 SharePoint 中签出,如果不是,则提醒用户并告诉他们该文件正在被其他人使用以及谁在使用它.

我在http://www.xcelfiles.com/IsFileOpen.html#anchor_37看到了一段代码

该代码似乎可以在测试场景中使用,因此我计划根据我的目的对其进行调整。我无法理解某些语法。

#If Not VBA6 Then

'// Xl97

For i = j - 1 To 1 Step -1

    If Mid(strXl, i, 1) = Chr(0) Then Exit For

Next

i = i + 1

#Else

'// Xl2000+

i = InStrRev(strXl, strFlag1, j) + Len(strFlag1)

#End If

我了解代码的作用,但我不明白“#”符号的意义。

另一个例子:

hdlFile = FreeFile

Open strPath For Binary As #hdlFile

strXl = Space(LOF(hdlFile))

Get 1, , strXl

Close #hdlFile

google 很痛苦,因为它太模糊了。

【问题讨论】:

【参考方案1】:

哈希表示它是一个指令。 用于从字面上包含或排除编译中的代码。

http://msdn.microsoft.com/en-us/library/7ah135z7.aspx

哎呀,这是针对 vb.net 的,不是吗。我认为相同的概念。

【讨论】:

【参考方案2】:

井号表示预处理器命令,它们是在编译之前处理的命令,本质上是生成动态/条件代码。这些类型的命令通常在 C/C++ 等语言中用于管理跨平台编程技术。一种常见的用法是检查特定环境或平台(即 VBA、Windows、MacOSX 等),然后实现特定于平台的代码。

http://en.wikipedia.org/wiki/Preprocessor

【讨论】:

这些也称为指令,用于条件编译。它们被称为预处理器命令,因为它们在被编译器处理之前由 预处理器 解释。 太棒了。非常感谢您提供的信息。这使得代码更容易理解。【参考方案3】:

公认的答案是正确的,您的第一个代码示例是编译指令。

如果其他人遇到这个问题,那么值得指出的是,您的第二个代码示例是另一回事。在这种情况下,这些是用于识别文本流的文件编号。您将看到它们在以下命令的上下文中使用。它们与编译器指令完全无关。

打开 "c:\test.txt" 输入为 #hdlFile 输入#hdlfile 打印#hdlfile 写#hdlfile 关闭#hdlfile

【讨论】:

以上是关于#if、#else、#end if 中的井号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB-判断语句if...else...end

if-else语句中,if和else的配对原则各是啥

mybatis po对象是啥意

velocity自定义标签和指令

是啥导致重新评估 if/else 表达式?

If then Else Excel VBA - "End If" 需要吗?