В настоящее время я работаю над Qt
приложение со многими #include
файлы из Qt
библиотека. Проект довольно большой, и я столкнулся со странной проблемой при сборке. Все ошибки отображаются внутри QPainterpath.h
файл, но не имеет ничего общего с обращениями к нему из моего проекта. Все ошибки выглядят так:
c: \ qt \ 4.8.4 \ include \ qtgui ../../ src / gui / painting / qpainterpath.h (397): ошибка C2143: синтаксическая ошибка: отсутствует ‘;’ до ‘::’
c: \ qt \ 4.8.4 \ include \ qtgui ../../ src / gui / painting / qpainterpath.h (397): ошибка C2059: синтаксическая ошибка: ‘::’
c: \ qt \ 4.8.4 \ include \ qtgui ../../ src / gui / painting / qpainterpath.h (398): ошибка C2143: синтаксическая ошибка: отсутствует ‘;’ до ‘{‘
c: \ qt \ 4.8.4 \ include \ qtgui ../../ src / gui / painting / qpainterpath.h (398): ошибка C2447: ‘{‘: отсутствует заголовок функции (формальный список старого стиля?)
c: \ qt \ 4.8.4 \ include \ qtgui ../../ src / gui / painting / qpainterpath.h (405): предупреждение C4003: недостаточно фактических параметров для макроса ‘elementCount’
Я сталкивался с этим однажды и смог решить это, переместив некоторые Qt
#include операторы, вызываемые перед другими заголовками классов под ними. Я не могу понять, что именно вызывает это на этот раз. Любые мысли были бы великолепны!
Спасибо!
Я видел это, когда вы забыли закрыть определение класса точкой с запятой. Если вы посмотрите на выходные данные компилятора и увидите, какой файл был скомпилирован непосредственно перед началом этой ошибки, у вас может быть свой ответ. Ищите синтаксические ошибки с отсутствующим ;
или дополнительный }
или пропавший }
в конце ранее скомпилированного файла.
Это также может быть от .h
файл, указанный выше вашего #include <QPainter>
вызов, который имеет ошибки.
Надеюсь, это поможет.
Я работаю с RyGuyFalcore и выяснил, почему это происходит в нашем коде, а никто другой этого не видит. Проблема в том, что наш старый код переопределял макрос elementCount. Поэтому, если бы мы включили эту часть нашего унаследованного кода до того, как включили код Qt, использовался неправильный макрос 🙁 Я решил опубликовать это здесь, чтобы избежать любой погони за диким гусем, с которой могут столкнуться другие, если они столкнутся с подобной ошибкой.