我有一个util.h包含一个函数,它将用于a.h和'bh',以及更多,a.h并将b.h相互包含以访问彼此定义的一些类。
//util.h
#ifndef _UTIL_H_
#define _UTIL_H_
#include <iostream>
void foo()
{
std::cout << "foo\n";
}
#endif
//a.h, it has a a.cpp
#ifndef _A_H_
#define _A_H_
#include "util.h"
#include "b.h"
//some classes' definition
#endif
//b.h, it has a b.cpp
#ifndef _B_H_
#define _B_H_
#include "util.h"
#include "a.h"
//some classes' definition
#endif
我的问题是,我得到multiple definition了foo. 如何?
我认为问题可能是,a.h包括util.h和b.h,并再次b.h包括,所以我得到了多个 def 错误。util.h但这似乎没有意义,因为util.h我写了#ifndef/#define守卫。
任何人都可以给我帮助,谢谢。