В моем коде C ++ есть макрос, в макросе есть неиспользуемая переменная. Я получаю предупреждение для этой переменной
макрос должен напечатать класс и имя метода
#define LOG_ENTER(func_name, message) \
LOG_SET_METHOD(#func_name) \
LOG_MOD_INTERNAL(TC_TAG(ENTER) << message)
#define LOG_SET_METHOD(name) static const char LOG__METHOD__[] = "::" name "() ";
Мы используем gcc версии 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC).
«предупреждение: неиспользуемая переменная» LOG__METHOD__ «»
Как подавить это предупреждение? Это вызывает больше шума!
Способ отключить предупреждение:
template <typename T>
void UnusedVar(const T&) {}
А затем используйте:
UnusedVar(my_var);
Кастинг в void
это также распространенный способ (но не работает для всех компиляторов):
(void) my_var; // or static_cast<void>(my_var)
Обычный способ заставить это предупреждение замолчать — использовать переменную в фиктивном выражении:
int main() {
int i;
i;
}
Тем не менее, это вызывает «Предупреждение: оператор не имеет никакого эффекта», потому что i
не имеет побочных эффектов и его значение не используется. Чтобы заставить это замолчать, мы явно игнорируем значение:
int main() {
int i;
(void)i;
}
И там идет предупреждение.