1

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"警告打印多次(每次包含它时),表明它被处理了多次,尽管包含保护。
我究竟做错了什么?

4

1 回答 1

4

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

有关更多解释,请参阅此答案: 如何使用 extern 在源文件之间共享变量?

于 2013-07-28T08:04:31.990 回答