Ответ, предложенный haavee (измененный ur), - это тот ответ, который я обычно использую:
int f(int a, float /*epsilon*/) {
return a*2;
}
Настоящая проблема возникает, когда аргумент иногда , но не всегда используется в методе, например ::
int f(int a, float epsilon) {
#ifdef LOGGING_ENABLED
LOG("f: a = %d, epsilon = %f\n", a, epsilon);
#endif
return a*2;
}
Теперь я не могу закомментировать имя параметра epsilon, потому что это нарушит мою сборку журналирования (я не хочу вставлять еще один #ifdef в список аргументов, потому что это делает код намного труднее для чтения).
Так что я думаю, что лучшим решением было бы использовать предложение Тома:
int f(int a, float epsilon) {
(void) epsilon; // suppress compiler warning for possibly unused arg
#ifdef LOGGING_ENABLED
LOG("f: a = %d, epsilon = %f\n", a, epsilon);
#endif
return a*2;
}
Меня беспокоит только то, что некоторые компиляторы могут предупреждать о "(пустом) эпсилоне;" заявление, например предупреждение «оператор не имеет никакого эффекта» или что-то подобное - я думаю, мне просто нужно протестировать все компиляторы, которые я, скорее всего, буду использовать ...