0

我正在尝试创建一个文件映射对象,但遇到了一些编译器错误。(我正在使用 MinGW GCC-8.2.0-3)

我从 VS-code 收到以下错误: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_READ | GENERIC_WRITE但错误too many initializer value仍然存​​在,但仅在GENERIC_READ. 我尝试过但无济于事的另一件事是CreateFileCreateFileA. 我包括Windows.h.

我真的很困惑为什么会发生这种情况,因为在WIN32 API 文档下它指出dwDesiredAccess它通常用作GENERIC_READorGENERIC_WRITEGENERIC_READ | GENERIC_WRITE

提前致谢!

4

1 回答 1

1

感谢@Jarod42 的回答。

我必须将文件句柄分配给一个变量:

HANDLE fileHandle = CreateFile(
    _T("combatlog.txt"),
    GENERIC_READ,
    FILE_SHARE_READ,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL
);
于 2021-07-21T16:54:31.843 回答