Sle*_*led 1 c++ warnings compiler-warnings
首先,对不起,如果这是一个显而易见的问题,但我对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
}
Run Code Online (Sandbox Code Playgroud)
NGRAMS目前设置为2.
G ++给了我一个警告(当然有适当的偏执选项)参数"i"未被使用.虽然这在技术上是正确的,但情况并非总是如此.我已经考虑过注释掉变量名,但是如果要更改NGRAMS,它会产生编译错误,直到取消注释; 这是不可取的.
相关问题的最古老的答案提出了一个宏,但另一张海报说它不是编译器独立的.我读过#pragma warning但是AFAICT就是VS C++的东西.有没有正确的方法来做到这一点?
对于那个特别的警告,你总是可以作弊:
#define UNREFERENCED_PARAMETER( x ) ( x )
Run Code Online (Sandbox Code Playgroud)
然后在你的代码中
int a( int b, int c )
{
UNREFERENCED_PARAMETER( c );
return b * b;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3616 次 |
| 最近记录: |