任何人都可以告诉我为什么我会得到一个
" multiple definition of 'member function' "
错误,即使我已经在类标题
中使用了#ifnotdef语句答案 0 :(得分:3)
#ifnotdef
不起作用。正确的预编译器切换为#ifndef
或#if !defined()
。
答案 1 :(得分:0)
似乎标题包含在多个模块中并包含函数定义。至于#ifnotdef那么我认为这是一个错字不是吗?否则编译器会发出其他错误。
答案 2 :(得分:0)
假设你的意思是标题包含包含警戒:
#ifndef SOME_HEADER_H // not #ifnotdef
#define SOME_HEADER_H
// header contents
#endif
这只会阻止多个包含在单个翻译单元中。如果将其包含在多个翻译单元中,它将不阻止其中定义的任何内容被多重定义。
要解决此问题,标头中声明的任何函数的定义可以是:
inline
,以便允许多个定义;或