在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"
警告打印多次(每次包含它),表明尽管有包含警卫,它仍被处理多次。
我做错了什么?
答案 0 :(得分:4)
头文件应包含声明,而不是定义。定义应该在单个C ++文件中,而不是全部。你应该做的是有一个带有这个定义的单个C ++文件,并在标题中使用“extern”声明。
有关更多解释,请参阅此答案: How do I use extern to share variables between source files?