При компиляции исходного файла C ++, если у вас есть несколько заголовков, состоящих из заголовков в скобках и в кавычках, должны ли заголовки в скобках всегда указываться первыми?
Нет.
Заголовочные файлы (как внутри исходных файлов, так и внутри других заголовочных файлов) могут быть в любом порядке.Фактически, заголовочный файл даже не нужно включать в начало исходного файла, если каждый заголовочный файл находится перед любыми объявлениями, которые зависят от объявлений из заголовка.Независимо от того, был ли путь задан в угловых скобках или в двойных кавычках, это не имеет значения.
Технически заголовок может быть записан так, что перед ним будут включены другие заголовки, но в целом этоплохой запах кода и чаще всего ошибка.
Исключением является предварительно скомпилированный заголовок, который является нестандартной функцией, реализуемой некоторыми компиляторами.Предварительно скомпилированный заголовок должен быть перед любым объявлением (и, следовательно, любым другим включением) исходного файла.
Хммм.Я думаю, что нашел проблему.У меня был этот двоичный файл с именем utilities.h.gch (не уверен, откуда он) в каталоге.Я удалил его, и проблема с компилятором исчезла.
Ах.gch - это расширение файла, используемое предварительно скомпилированными заголовками, и это объясняет, почему вашего примера недостаточно для воспроизведения вашей проблемы.Подробнее о поведении предварительно скомпилированных заголовков см. В руководстве к вашему компилятору.