正在浏览Filezilla源代码并进入这一行:
int systemFolders[3] = {CSIDL_PERSONAL, CSIDL_DRIVES, CSIDL_NETWORK};
我搜索了项目,发现这些变量没有被声明为整数。
我查找了CSIDL_PERSONAL,它似乎是Windows的某种系统变量。
那他们为什么要整理?
编辑:如果它是一个路径变量,为什么它是一个数字?
答案 0 :(得分:2)
CSIDL是数字标识符(可能为#define
,其类型为int
),用于指代Windows上的某些特定系统文件夹。
要获取它们引用的路径/ shell位置,必须使用一些shell函数,通常是SHGetSpecialFolderPath。 CSIDL用于指定要获取路径的特殊文件夹;另一种方法是为每个特殊文件夹分别设置一个功能,这很麻烦而且浪费代码。
使用这种方法来检索特殊文件夹的位置而不是硬编码非常重要,因为它们中的许多位置可以为每个用户定制/不同(例如在Documents文件夹中)。
答案 1 :(得分:0)
我现在没有方便的Windows框,但MSDN lists them as integer constants。它们可能是<shlobj.h>
中包含的宏,因此它们将被扩展为整数文字。