我有一个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
守卫。
任何人都可以给我帮助,谢谢。