为什么CSIDL_PERSONAL在这行代码中是一个整数?

时间:2011-10-06 23:01:38

标签: c++

正在浏览Filezilla源代码并进入这一行:

int systemFolders[3] = {CSIDL_PERSONAL, CSIDL_DRIVES, CSIDL_NETWORK};

我搜索了项目,发现这些变量没有被声明为整数。

我查找了CSIDL_PERSONAL,它似乎是Windows的某种系统变量。

那他们为什么要整理?

编辑:如果它是一个路径变量,为什么它是一个数字?

2 个答案:

答案 0 :(得分:2)

CSIDL是数字标识符(可能为#define,其类型为int),用于指代Windows上的某些特定系统文件夹。

要获取它们引用的路径/ shell位置,必须使用一些shell函数,通常是SHGetSpecialFolderPath。 CSIDL用于指定要获取路径的特殊文件夹;另一种方法是为每个特殊文件夹分别设置一个功能,这很麻烦而且浪费代码。

使用这种方法来检索特殊文件夹的位置而不是硬编码非常重要,因为它们中的许多位置可以为每个用户定制/不同(例如在Documents文件夹中)。

答案 1 :(得分:0)

我现在没有方便的Windows框,但MSDN lists them as integer constants。它们可能是<shlobj.h>中包含的宏,因此它们将被扩展为整数文字。