首页 文章

C定义和声明之间的说明符

提问于
浏览
0

我得到以下声明:

// file MadaPacket.h
class MadaPacket
{
// ....
public:
  inline static bool word_is_header(int w);
}

作为通讯员的声明:

// file MadaPacket.cpp
#include "MadaPacket.h"

inline bool MadaPacket::word_is_header(int w)
{
    return w == 0xFBBA;
}

MSVC12构建器在链接时失败,原因如下:

未解析的外部符号“public:static bool __cdecl MadaPacket :: word_is_header(int)

static 添加到定义会导致错误

'static'不应用于在文件范围定义的成员函数

从定义中删除 inline 会导致错误

未解析的外部符号“public:static bool __cdecl MadaPacket :: word_is_header(int)

我想我误解了一些定义 - 声明关系 .

EDIT

显然我想要两个修饰符,如果可能的话 .

2 回答

  • -1

    从两个位置删除 inline 关键字 .

    仅当在多个翻译单元中包含的头文件中定义函数时,才应使用 inline 关键字 . 嗯,还有其他情况可以使用它,但这里没有一个适用 .

  • 2

    您的 .h 文件和 .cpp 文件中没有相同的修饰符列表 . 两个定义应该完全相同,链接器才能找到它们 . 所以我'd first remove '静态'来自两者并重新编译 .

相关问题