пример одной ошибки синтаксиса C

Решили как часто бывает вынести часть функционала в отдельный класс.

Все вроде бы просто, но забыли в h файле в конце после объявления класса поставить ; (точку с запятой) :

class myDb 
{
    explicit myDb(QString &dataPath);
   .......
}

И началось... Ошибки появляются в заголовочных файлах самой QT - qtextstream.h , .. везде кроме наших файлов нашего проекта.

Очень трудно по комментариям ошибок сборки соорентироваться, где есть баг ? :

D:\qtsdk1.2.1dll\qtsources\4.8.1\include\qtcore\..\..\src\corelib\io\qtextstream.h:67: error: C2146: syntax error : missing ';' before identifier 'QtCoreModule'

В qtextstream.р естественно никто ничего не менял, хотя подозрения такие конечно посещали...

Количество ошибок под сотню и мысли приходят не хорошие.

Золотое правило - когда сыпятся ошибки сотнями

Перейди с консоль сборки и смотри на каком файле при компиляции начинается бред.

То есть не надо пытаться понять умные сообщения типа :
error: C2238: unexpected token(s) preceding ';'
или
error: C2059: syntax error : 'string'

Тупо идем в консоль сборки и ищем на каком последнем файле начинаются ошибки , смотрим его h файл и его .cpp файл и находим что-то типа этого (опять ;) :

#include "window1.h"

//class myDb;
;
class my_table_Dlg : public QDialog
{
    Q_OBJECT
public:

Или еще вариант находим последний файл , на котором начинаются ошибки и вдруг при открытии видим подсказку , что кодовая страница изменилась :

фотка 1

Или еще такой вариант , когда переменная конструктора почему-то стала другого цвета чем другие переменные этого же конструктора:

фотка 2

Что делаем , когда уже ничего не помогает

Делаем полную копию проекта и начинаем отключать файлы от проекта. Удобно это делать просто просто комментируя нужные строчки в файле pro проекта Qt.

Может выяснится например , что куда-то пропали из файловой системы ui_...h файлы ...

Или например в результате рефакторинга, то есть глобального переименования названия класса и /или рефакторинга объявленных переменных они поменялись местами в коде.

Все это обычно результат одновременно множественных переименований в проекте, то есть всегда лучше делать по очередно рефакторинг с полной пересборкой проекта.