Прежде всего, извините, если это очевидный вопрос, но я довольно плохо знаком с 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
}
NGRAMS в настоящее время установлено на 2.
G ++ выдает мне предупреждение (конечно, с соответствующими параноидальными параметрами), что параметр "i" не используется. Хотя это технически верно, это не всегда так. Я думал о том, чтобы закомментировать имя переменной, но тогда, если NGRAMS должен был быть изменен, он произвел бы ошибку компилятора, пока не был закомментирован; что нежелательно.
Самый старый ответ на связанный вопрос предлагает макрос, но другой автор говорит, что он не зависит от компилятора. Я читал о #pragma warning
, но AFAICT это VS C ++. Есть ли даже правильный способ сделать это?