#ifndef会在这个案子中工作吗?

时间:2013-04-24 13:41:33

标签: c++ linker object-files

有两个类,每个类都会使用一个函数:

的main.cpp

#include "class1.h"
#include "class2.h"
int main()
{
    ...
}

class1.h

#ifndef class1_h
#define class1_h
class class1
{
    ...
}
#endif

class1.cpp

#include "class1.h"
#include "func.h"
...

class2.h

#ifndef class2_h
#define class2_h
class class2
{
    ...
}
#endif

class2.cpp

#include "class2.h"
#include "func.h"
...

func.h

 #ifndef func_h
 #define func_h
 int function(int)
 {
     ...
 }
 #endif

但上面的代码会导致链接器错误:“apple Mach-O链接器命令失败,退出代码为1”

#ifndef中的func.h是否适用于不同的目标文件,或仅适用于单个目标文件?

在链接class1.oclass2.o后,function是否定义了两次?

0 个答案:

没有答案