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

edA*_*a-y 7 c++ gcc visual-studio

我想获得GCC产生的警告时,发现已被宣布与这两个名字是VisualStudio的生产classstruct.(警告4099)这通常来自前向声明,例如:

struct Base;
...
class Base { ... };
Run Code Online (Sandbox Code Playgroud)

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

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

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


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

Ant*_*nio 5

从版本 10 开始,gcc 也像 clang 一样提供了-Wmismatched-tags标志/sf/answers/4664833141/


Mat*_* M. 4

gcc 不关心差异。Itanium ABI 的损坏方式classstruct此相同,使它们成为纯粹的语法差异。

Clang 必须-Wmismatched-tags激活此检测,但我找不到等效的 gcc(如果有)。