如何删除 VS 警告 C4091: 'typedef' : 在没有声明变量时在 'SPREADSHEET' 左侧被忽略

新手上路,请多包涵

此警告在我的代码中由同一个声明多次触发,内容如下:

 // Spreadsheet structure
typedef struct SPREADSHEET
{
      int ID;               // ID of the spreadsheet
      UINT nLines;          // Number of lines

      void CopyFrom(const SPREADSHEET* src)
      {
           ID = src->ID;
           nLines = src->nLines;
      }
};

我不想关掉那个警告,

而是更改代码,以免出现警告!

注意:我不想在这里声明任何变量(它是一个头文件),只定义结构’SPREADSHEET’应该包含的内容……

原文由 Wartin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

删除 typedef 。这是声明结构的 C 方式,C++ 会自动为您完成。

原文由 Blindy 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果对 C 和 C++ 使用相同的标头,则 需要在终止“ ; ”之前添加一些标识符,例如:

 typedef struct BLAH { ... } BLAH;

但是,如果您仅将其用于 C++,则只需删除“ typedef ”部分(并且不要在终止“ ; ”之前添加标识符,因为没有“ typedef “创建变量的部分)。


此外,您可能想要编辑 C-only-headers 并将所有内容包装在 extern "C" { ... } 中,以支持 C++,例如:

 #ifndef MY_HEADER_H
#define MY_HEADER_H

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

// ... Content: Includes and Type-defs go here ...

#ifdef __cplusplus
} // extern C
#endif // __cplusplus

#endif // MY_HEADER_H

我的意思是,否则每个包含 C-only-header 的 C++ 文件都需要单独包装。

原文由 MSN 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题