Получается, магическим образом, самопроизвольно, между включениями VulkanTexture.h и VulkanglTFModel.h был объявлен define.
А на самом деле где этот define определяется и как это место относится ко всем этим заголовочным файлам?
Разве препроцессор не последователен и может включать файлы в том порядке, в каком ему заблагорассудится, а не как я написал?
Нет, не может, но возможно ты не вполне понимаешь сам, в каком порядке ты написал их подключение. Так, например,
Helpers/VulkanTexture.h
и
VulkanTexture.h
-- это один и тот же файл, или разные? Если один и тот же, то из-за
#pragma once
в нём он не подключается в VulkanglTFModel.h, а если разные -- то подключается.
Понять, что фактичиски куда подключается можно выполнив вместо шага компиляции только препроцессирование (например, для gcc заменив в команде компиляции ключ
-c
на
-E
). В выводе препроцессора не видно дефайнов, но видно когда подключается тот или иной файл и видно весь исходный код не относящийся к препроцессору.