重新定义功能

时间:2011-12-29 23:08:21

标签: c++ c

我有一个文件example1.cpp,其中包含main功能。此文件必须包含#include mylib.h#include lib.h。文件mylib.h也有#include lib.h。当我尝试编译此程序时,错误redefinition xyz function发生了。

example1.cpp

#include mylib.h
#include lib.h

int main(){
//code
}

mylib.h

#include lib.h

//rest code

2 个答案:

答案 0 :(得分:7)

您需要在头文件中放置include guards,以防止在编译期间多次包含它。

#ifndef LIB_H
#define LIB_H

// Actual header file code

#endif

答案 1 :(得分:4)

您必须将.h文件包装在#defines中以避免重定义。例如:

#if !defined(_MY_LIB_H_)
#define _MY_LIB_H_

// Add your function definitions here...

#endif  // _MY_LIB_H_

现在可以将它包含在任何地方,函数定义将被读取一次。另请注意,您可以根据编译器使用#ifndef。例如,VC ++允许“#pragma once”,如果它是10或更高版本:

#if _MSC_VER > 1000
#pragma once
#endif

在这种情况下,您不需要使用上面解释的#defines。