Ну а если я не инклудю эти файлы друг к другу?) То для каждого макрос будет свой, верно?)
Инклюд заменяется содержимым подключаемого файла, больше ничего не меняется.
Например:
hdr_a.h
C++ (Qt)
#ifndef A_H
#define A_H
#define MAX 5
#endif
hdr_b.h
C++ (Qt)
#ifndef B_H
#define B_H
#define MAX 10
#endif
main.cpp
C++ (Qt)
#include "hdr_a.h"
#include "hdr_b.h"
int main()
{
}
грубо говоря развернется в
C++ (Qt)
#ifndef A_H
#define A_H
#define MAX 5
#endif
#ifndef B_H
#define B_H
#define MAX 10
#endif
int main()
{
}
и это отдастся препроцессору, который увидит попытку переопределить MAX, о чем и скажет.
Причем, значение MAX будет содержать из последнего хедера. Если их поменять местами измениться и значение MAX.