创建文件映射对象时 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 valuesGENERIC_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_READGENERIC_WRITEGENERIC_READ | GENERIC_WRITE

提前致谢!

感谢@Jarod42 的回答。

我不得不将文件句柄分配给一个变量:

HANDLE fileHandle = CreateFile(
    _T("combatlog.txt"),
    GENERIC_READ,
    FILE_SHARE_READ,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL
);