重新定义功能
Redefinition of function
我有一个具有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
相关文章:
- 类模板的成员功能的定义在单独的TU中完全专业化
- C++ - 没有自定义交换功能的移动分配运算符?
- 如何定义可变参数类模板的成员模板功能
- '_HAS_CXX17'宏是否可用于自定义项目标头以启用C++17 语言集功能?
- C++模板功能并定义特定情况
- 这种错误的原因是什么:将"功能"重新定义为不同类型的符号
- 功能原型,没有定义
- 如何在cmake工具链文件中设置编译功能,以便已知的自定义编译器使用target_compile_features
- 如何将标准::矢量插入具有自定义排序功能的 std::set 中
- C++ 添加编译器警告,以错误使用自定义打印/日志功能
- 为什么此C 功能定义不需要卷曲括号
- 使用clang获取功能定义
- 使用正则匹配功能定义
- 类功能定义但不称为(C )
- 选择性地将功能定义添加到Python名称空间
- C 使用功能定义中的if/其他语句以返回最小的数字
- C 功能定义和可变声明不匹配
- 全局功能定义
- Intellisense中缺少的功能定义C 2005-2013
- 头文件和源文件的功能定义