神秘的"multiple definition"错误
Mysterious "multiple definition" error
https://gist.github.com/protectivetoast83/25301772cbc6f13e6e07
I moved
#include "time.h"
从 objcolphyss .cpp的第二行(继承自objects.h)到objects.h
的第三行time.h不包括在项目的其他任何地方,但现在我在time.h
的第9行上得到多个定义错误In function `Z7runTimev':
multiple definition of `runTime()'
first defined here
也,我不知道什么是Z7runTimev的东西,因为函数被声明为runTime()
发生了什么,我该如何修复它?
您错过了包含文件中的所有包含保护(正如评论中提到的,为了清楚起见,我将在这里公开它)。
当您在多个文件中包含相同的头文件时,预处理器只是用包含文件中的所有代码替换#include
指令。因此,嵌套包含可能导致多次重新定义。
#ifndef _TIME_H
#define _TIME_H
// Header file code here
#endif
这保证文件只被包含一次(其余的时间预处理器会因为#ifndef
指令而跳过头文件代码)。为了安全起见,您需要在所有包含文件中添加包含保护,当然要使用相应的命名。
现在许多编译器支持指令#pragma once
,你需要在文件的开始添加,并避免在文件的开始有丑陋的#ifdef
s的麻烦(当然,孤独的#endif
在末尾)
相关文章:
- Qt5 C++中出现意外"Multiple definition"错误
- "multiple definition of"链接错误
- 编译mbed操作系统程序时"multiple definition of `main'"错误
- C++ 使用生成文件捕获框架'multiple definition'链接器错误
- 'Multiple Definition'错误
- 我什么时候会收到"overloaded definition needed"错误?
- C++:" multiple definition of 'mainCRTStartup' "错误等
- 调试"multiple definition of ..."错误的一般技术?
- 编写仅标头模板库时"Multiple definition of"错误
- GNU GCC 编译器错误"multiple definition of main"
- 多个 c++ 文件导致"multiple definition"错误?
- 如何在多个类中使用库而不会出现"multiple definition"错误
- 使用 -Wall 而不是 -o 时出现"multiple definition of _start"错误
- "Declaration of xxx outside of class is not definition"错误
- 使用嵌套模板时出现"template definition of non-template"错误
- 链接到 Boost::p rocess 0.6 时出现"multiple definition"错误
- "Multiple Definition Of"错误。我做错了什么?
- 奇怪的"multiple definition of"错误类型
- #ifnotdef:错误" multiple definition of 'member function' "
- 神秘的"multiple definition"错误