#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 中的井号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章