Имеется 3 файла:
1) a.h
//----------------------
#ifndef a_h
#define a_h
namespace ns
{
void foo(){};
}
#endif
//---------------------
2) b.h
//---------------------
#ifndef b_h
#define b_h
#include "a.h"
#endif
//---------------------
3) c.h
//---------------------
#ifndef c_h
#define c_h
#include "b.h"
#endif
При таком положении дел все компилируется и работает, но стоит добавить файл
b.cpp
//----------------------
#include "b.h"
//----------------------
как линкер выдаёт ошибку: a.h:6: multiple definition of `ns::foo()'.
Не понимаю чем вызвана эта ошибка и как в данном случае с ней справиться? Задаю вопрос в разделе про Qt, так как это упрощенная модель структуры программы, которая создаётся в Qt Creator 4.6.2