Предположим, у меня есть единая сборка:
Код: Выделить всё
//impl1.h
//impl1.cpp -> #include s impl1.h
//impl2.h
//impl2.cpp -> #include s impl2.h AND impl1.h
//main.cpp
#include "impl1.cpp"
#include "impl2.cpp"
int main(){
//stuff
}
Имеет ли значение, что impl1.h такой:
Код: Выделить всё
#ifndef IMPL1_H
#define IMPL1_H
//impl1.h stuff
#endif
в отличие от
Причина, по которой я спрашиваю, заключается в том, что семантика защиты заголовка, как мне кажется, делает это абсолютно очевидным.
больше не обрабатывает impl1.h. При использовании #pragma Once и предположении, что #include " " выполняет более или менее простую текстовую замену, возникают ли проблемы с тем, что компилятор видит несколько #pragma Once, соответствующих одному и тому же или разным файлам заголовков, при обработке main.cpp ?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... gma-once-v