GCC可以产生像VS这样的结构/类名称不匹配吗?

时间:2011-04-19 06:37:12

标签: c++ visual-studio gcc

我想让GCC在找到一个已用classstruct声明的名称时产生VisualStudio生成的警告。 (警告4099)这通常来自前向声明,例如:

struct Base;
...
class Base { ... };

VS在这种情况下实际上无法链接,因此我已将警告提升为错误。由于这个项目是跨平台的,我想在使用GCC进行编译时也发现这个问题 - 否则我可能会意外地检查在VS中无效的代码。

是否有任何开关或方法让GCC也拒绝或警告这样的类/结构声明不匹配?

注意:根据评论,不确定此警告是否合法。对于我的问题它是不相关的,因为条件导致VisualStudio中的链接失败(我不能忽略警告)。因此,我只想使用GCC识别问题,以便我的Windows编译不会突然停止工作。


答案:似乎没有解决方案。

3 个答案:

答案 0 :(得分:3)

gcc并不关心这种差异。 Itanium ABI以同样的方式破坏classstruct,使它们成为纯粹的语法差异。

Clang有-Wmismatched-tags来激活这个检测,但我找不到gcc等价物(如果有的话)。

答案 1 :(得分:3)

从版本 10 开始,gcc 也像 clang 一样提供了 -Wmismatched-tags 标志 https://stackoverflow.com/a/66640473/2436175

答案 2 :(得分:0)

您使用的是哪个版本的VC ++。 VC ++ 6.0中存在错误,这意味着它以不同的方式处理structclass,但这已在以后的编译器中修复;例如,我对VC ++ 2005没有任何警告。