创建文件映射对象时 GENERIC_READ 上的 C++ 初始化值太多
C++ too many initializer values on GENERIC_READ when creating a file mapping object
我正在尝试创建文件映射对象,但遇到了一些编译器错误。 (我使用的是 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
下。我尝试过的另一件事是将 CreateFile
替换为 CreateFileA
。我包括 Windows.h
.
我真的很困惑为什么会这样,因为在 WIN32 API Documentation 下它指出 dwDesiredAccess
通常用作 GENERIC_READ
或 GENERIC_WRITE
或 GENERIC_READ | GENERIC_WRITE
提前致谢!
感谢@Jarod42 的回答。
我不得不将文件句柄分配给一个变量:
HANDLE fileHandle = CreateFile(
_T("combatlog.txt"),
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
我正在尝试创建文件映射对象,但遇到了一些编译器错误。 (我使用的是 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
下。我尝试过的另一件事是将 CreateFile
替换为 CreateFileA
。我包括 Windows.h
.
我真的很困惑为什么会这样,因为在 WIN32 API Documentation 下它指出 dwDesiredAccess
通常用作 GENERIC_READ
或 GENERIC_WRITE
或 GENERIC_READ | GENERIC_WRITE
提前致谢!
感谢@Jarod42 的回答。
我不得不将文件句柄分配给一个变量:
HANDLE fileHandle = CreateFile(
_T("combatlog.txt"),
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);