C ++宏导致:“警告:未使用的变量”LOG__METHOD__“”

时间:2015-04-15 07:30:10

标签: c++ gcc compiler-warnings gcc-warning compiler-flags

我的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)。

  

&#34;警告:未使用的变量&#34; LOG__METHOD __&#34; &#34;

如何抑制此警告?它会造成更多噪音!

2 个答案:

答案 0 :(得分:0)

禁用警告的方法:

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

然后使用:

UnusedVar(my_var);

转换为void也是一种常见方式(但不适用于所有编译器):

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

答案 1 :(得分:-1)

沉默此警告的常用方法是在虚拟表达式中使用该变量:

int main() {
    int i;
    i;
}

然而,这会触发&#34;警告:语句无效&#34;,因为i没有副作用且未使用其值。为了使这个沉默,我们明确地忽略了这个值:

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

然后发出警告。