应该禁用MSVC的C4138警告("评论之外的'*/'")吗?

Mit*_*tch 5 c++ visual-c++

使用msvc2017编译以下代码时

void Foo::bar(A */*a*/)
Run Code Online (Sandbox Code Playgroud)

我收到这个警告:

foo.cpp:38: warning: C4138: '*/' found outside of comment
Run Code Online (Sandbox Code Playgroud)

我可以通过在星号后面添加一个空格来解决这个问题:

void Foo::bar(A * /*a*/)
Run Code Online (Sandbox Code Playgroud)

但是,我必须在很多地方执行此操作,如果我取消注释参数,由于额外的空间,我使用的编码样式将不会被遵循.

由于我没有用gcc或clang得到相同的警告,我想知道这是否是可以安全地禁用的特定于MSVC的怪癖.

Bat*_*eba 2

是的,这是一个毫无根据的警告;您提供的代码没有任何问题。事实上,在函数定义中注释掉变量名可能很有用,例如当您想要在自记录的函数参数列表中抑制“未使用的变量”警告时。

  1. 如果代码中确实存在不匹配的注释块,请关闭警告并依靠编译器发出诊断。

  2. 向编译器供应商提交错误报告。

  • @NeilButterworth 但其中一些是最常见的问题(例如,未初始化的变量),而其他则完全是假的。错误警告虽然不会使编译器不合格,但却是实现质量问题。 (2认同)