gcc — макрос C ++, вызывающий: & quot; предупреждение: неиспользуемая переменная & quot; LOG__METHOD __ & quot; & Quot;

В моем коде 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__ «»

Как подавить это предупреждение? Это вызывает больше шума!

-1

Решение

Способ отключить предупреждение:

template <typename T>
void UnusedVar(const T&) {}

А затем используйте:

UnusedVar(my_var);

Кастинг в void это также распространенный способ (но не работает для всех компиляторов):

(void) my_var; // or static_cast<void>(my_var)
0

Другие решения

Обычный способ заставить это предупреждение замолчать — использовать переменную в фиктивном выражении:

int main() {
int i;
i;
}

Тем не менее, это вызывает «Предупреждение: оператор не имеет никакого эффекта», потому что i не имеет побочных эффектов и его значение не используется. Чтобы заставить это замолчать, мы явно игнорируем значение:

int main() {
int i;
(void)i;
}

И там идет предупреждение.

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector