Например, я хочу два файла заголовка, которые могут зависеть от функции от другого файла заголовка.Почему заголовочный файл Head1.h не содержит заголовочный файл Head2.h, который включает Head1.h?
//Header1.h file
#include Header2.h
void h1(){
//...
func1();
}
void h2();
//Header2.h file
#include Header1.h
void func1();
void func2(){
//some other code...
h2();
}
Это может показаться, что большой вопрос, но для того, чтобы некоторые файлы, чтобы быть логически последовательной, мне иногда хочется такого рода зависимости. Я столкнулся с этой проблемой несколько раз в Visual Studio, компилируя код на C++. Но это никогда не компилирует, даже когда я включил соответствующий защитный заголовок для каждого файла, т.е.
#ifndef HEADER1_H
#define HEADER1_H
//Header1.h...
#endif
Почему это не разрешено? Или, есть ли способ скомпилировать это, чтобы он работал?
См [вперед декларации] (HTTP: // StackOverflow.com/questions/4757565/c-forward-declaration) – Miki
Не ставьте определения в заголовки. –