【问题标题】:Why am I getting: multiple definition of even though I use include gaurds [duplicate]为什么我会得到:即使我使用包含守卫的多重定义[重复]
【发布时间】:2013-07-28 07:12:49
【问题描述】:

input.h 我这样定义eventFunctions:

multimap <Uint8, function<void(SDL_Event&)>> eventFunctions;

Input.h 被包围:

#ifndef INPUT_H
#define INPUT_H
//code
#endif

但是,在编译时我得到了这个:multiple definition of eventFunctions 引用包含input.h 的每个文件。 我还将它添加到 input.h 以查看在编译期间它被处理了多少次:#warning "entered input_h" 警告打印了几次(每次包含它),表明它被处理了多次,尽管包含保护。 我做错了什么?

【问题讨论】:

    标签: c++ header linker


    【解决方案1】:

    头文件应该包含声明,而不是定义。定义应该在单个 C++ 文件中,而不是所有文件中。您应该做的是有一个具有此定义的 C++ 文件,并在标题中使用“extern”声明。

    有关更多解释,请参阅此答案: How do I use extern to share variables between source files?

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多