#ifnotdef:错误" multiple definition of 'member function' "

#ifnotdef : Error " multiple definition of 'member function' "

本文关键字:member function definition 错误 multiple #ifnotdef of      更新时间:2023-10-16

有人能告诉我为什么要获得吗

 " multiple definition of 'member function' " 

错误,尽管我在类标题

中使用了#ifnotdef语句

#ifnotdef不工作。正确的预编译器开关是#ifndef#if !defined()

似乎标头包含在多个模块中,并包含函数定义。至于#ifnotdef,我认为这是一个拼写错误,不是吗?否则,编译器将发出另一个错误。

假设标头包含保护:

#ifndef SOME_HEADER_H  // not #ifnotdef
#define SOME_HEADER_H
// header contents
#endif

这只会防止在单个翻译单元中包含多个内容。如果您将其包含在多个翻译单元中,它将不会阻止其中定义的任何内容被多重定义。

为了解决这个问题,头中声明的任何函数的定义都可以是:

  • 移动到源文件中,因此只有一个定义;或
  • 使得inline,从而允许多个定义;或
  • 如果它们是成员函数,则移到类定义中,以便它们隐式内联