«включая» что-то в c / c ++ по существу означает: заставьте препроцессор скопировать и вставить #include <file>
непосредственно в ваш исходный код (или лучше: предварительно обработанную версию вашего исходного кода).
Вы не можете отменить действие копирования и вставки.однако вы можете использовать «#undef», введенный этим действием копирования и вставки, но вы должны делать это для каждого атома, который вам не нравится, вы просто не можете #undef весь файл.
, чтобы проверить, еслиданный заголовок уже был включен, вы должны проверить, определено ли уже что-то из этого файла заголовка.большинство заголовков содержат так называемые «охранники», которые выглядят как
#ifndef FOO_H
#define FOO_H
/* lots of code */
#endif
для файла с именем «foo.h».Вы можете проверить «FOO_H» следующим образом:
#ifdef FOO_H
/* do your magic */
#endif
пример:
foo.h:
#ifndef FOO_H
#define FOO_H
struct Foo { /* ... * };
#endif
bar.h:
#include "foo.h"
#ifdef FOO_H
#undef Foo
#endif
, но это может привести к большим головным болям, если вы не знаете, что именно вы делаете,Если ваша настоящая проблема заключается в том, что ваш компилятор жалуется на «уже объявленные вещи», то вы не защищаете заголовочные файлы от множественного включения ...