首先,很抱歉,如果这是一个明显的问题,但我对C++不太了解。此外,这个代码并不是我的,但我正在尝试清理它。如何在C++中抑制单个警告?
我正在寻找一种独立于编译器的方式来抑制特定行的警告(最好)。我有以下代码:
int MPtag::state_next(int i, int s){
#if NGRAMS==2
return s+1;
#elif NGRAMS==3
return tag_at(i,0) * num_tags + s+1;
#elif NGRAMS>=4
return tag_at(i,-1) * num_tags*num_tags + tag_at(i,0)*num_tags + s+1;
#endif
}
的n-gram当前设置为2
G ++给了我一个警告(当然是在适当的偏执选项),参数“i”是未使用。虽然这在技术上是正确的,但情况并非总是如此。我考虑过注释掉变量名,但是如果NGRAMS被改变,它会产生一个编译错误,直到取消注释;这是不希望的。
oldest answer for related question提出了一个宏,但另一个海报说它不是编译器独立的。我读过#pragma warning
,但是AFAICT是VS C++的东西。有没有适当的方法来做到这一点?
G ++支持一些msvc扩展名,你应该试试'#pragma warning(disable:nnnn)'其中nnnn是警告编号 – 2010-02-04 09:22:14
我也有问题。我们在这里有代码编译在不同的编译器上(用于嵌入的G ++ 3.x,用于桌面的G ++ 4.x,用于桌面/测试的VC++ 9),并且它们都有不同的警告。 G ++有压缩_some_警告的选项,而在VC++中,每个警告和错误都有一个可以用编译器选项和编译指示压缩的数字代码。我对这种情况不满意。如果您将_treat警告作为errors_启用,则会变得更糟。 – OregonGhost 2010-02-04 09:24:29
@John,在哪里找到警告号码?我的编译器只给了我一些消息,比如“code/MPtag.C:68:warning:unused parameter'i'”? – ArtB 2010-02-04 10:13:52