CS2061 语法错误在 commoncontrols.h.

CS2061 syntax error in commoncontrols.h

本文关键字:commoncontrols 错误 语法 CS2061      更新时间:2023-10-16

我最近开始写C++,我决定写一个Qt程序作为介绍,因为我已经知道很多函数名称等。我有一个文件,它使用一些 win32 API 获取巨型图标。要使用它,我有以下内容包括:

#include <commoncontrols.h>
#include <shellapi.h>
#include <CommCtrl.h>
//other include statements for Qt

我不断收到错误

C:\Program Files (x86(\Windows Kits\8.1\Include\um\commoncontrols.h:198:错误: C2061:语法错误:标识符"IMAGELISTDRAWPARAMS">

C:\Program Files (x86(\Windows Kits\8.1\Include\um\commoncontrols.h:212: 错误: C2061: 语法错误: 标识符"IMAGEINFO">

错误怎么会出现在 commoncontrols.h 中?据我了解,编译器找不到对那些struct的引用,因为 CommCtrl 包含在公共控制之后。所以我颠倒了他们的包含位置,认为这可以解决问题,但这导致了 127 个其他错误,所以这似乎不是正确的方向。我在Qt 5.4.1中使用Qt creator,我在Windows 8.1上,所以我正在使用Windows SDK。该套件是x64,因为我在VS 2013中使用MSVC x64编译器。

我做错了什么,为什么错了?

您有一个循环依赖问题。您没有提供有关其他头文件的太多信息。例;
标头A.h可能取决于标头B.h,标头B.h取决于标头A.h。您主要通过将标头B.h中的#include "A.h"替换为标头A.h的前向声明来解决此问题; class A在标头B.h中,反之亦然。