【发布时间】:2021-09-29 01:35:50
【问题描述】:
我正在尝试创建文件映射对象,但遇到了一些编译器错误。 (我正在使用 MinGW GCC-8.2.0-3)
我从 VS 代码中收到以下错误:too many initializer values 位于 GENERIC_READ 行。
HANDLE CreateFile(
L"filename.txt",
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
编译项目时出现以下错误:
main.cpp: In function 'int main()':
main.cpp:18:5: error: expression list treated as compound expression in initializer [-fpermissive]
);
^
main.cpp:18:5: error: invalid conversion from 'int' to 'HANDLE' {aka 'void*'} [-fpermissive]
我尝试用GENERIC_READ | GENERIC_WRITE 替换GENERIC_READ,但too many initializer value 的错误仍然存在,但仅在GENERIC_READ 下。我尝试过的另一件事是用CreateFileA 替换CreateFile。我包括Windows.h。
我真的很困惑为什么会发生这种情况,因为在WIN32 API Documentation 下它指出对于dwDesiredAccess,它通常用作GENERIC_READ 或GENERIC_WRITE 或GENERIC_READ | GENERIC_WRITE
提前致谢!
【问题讨论】:
-
HANDLE h = CreateFile(...)? -
这解决了这个问题,谢谢!
-
能否请您发布您的代码,以便我们尝试重现?或者,如果您关注this example,会发生什么?
标签: c++ file-mapping