我有一个文件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
答案 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。