重新定义功能

Redefinition of function

本文关键字:功能 定义 新定义      更新时间:2023-10-16

我有一个具有main功能的文件example1.cpp。该文件必须包含#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

您需要在头文件中放置include保护,以防止它在编译过程中被多次包含。

#ifndef LIB_H
#define LIB_H
// Actual header file code
#endif

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

#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

在这种情况下,你不需要使用上面解释的#define