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

标签 c++

正在浏览 Filezilla 源代码并来到这一行:

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

我搜索了项目,找不到这些声明为 int 的变量。

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

那么为什么它们是整数?

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

最佳答案

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

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

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

关于c++ - 为什么 CSIDL_PERSONAL 在这行代码中是一个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7681436/

相关文章:

c++ - 在多台机器上分布状态

c++ - C++ 中的编译时类型替换

c++ - 读取数学运算时 cin 无法正常运行

c++ - 在 Windows 7 上静态构建 Qt 5.1.1 - nmake 和 cl 错误

c++ - 从 C++ .dll 到 Delphi Forms 应用程序的 PostMessage 问题

c++ - 如何使用 CUDA 将 std::vector<std::string> 复制到 GPU 设备

C++/Win32 在虚拟内存中创建文件

c++ - 类构造函数中冒号后的参数?

c++ - googletest-自动打印出哪个EXPECT语句失败

c++ - 将 std::conditional 与迭代器一起使用