在gcc 4.6.1
中编译C源代码时,我收到了以下警告。
warning: variable set but not used [-Wunused-but-set-variable]
我提到了这个链接Wunused,但我能确切地知道是什么导致了这个warning.Would,有谁能告诉我更多细节,是什么导致了这个警告,我们怎样才能摆脱它?
编辑我有一个下面的代码片段。编译程序会显示上述警告。你能建议我如何纠正它吗?
test_function(){
BOOL BoolTest;
BoolTest = test_fucntion2();
#ifdef CHECK
if (!BoolTest) {
misc_StartErrorReport();
misc_ErrorReport("\n test_function2: Input not indexed.\n");
misc_FinishErrorReport();
}
#endif
//
BoolTest is no more used below it.
// }
发布于 2011-08-19 12:57:58
您需要在BoolTest
的声明和初始化过程中包含预处理器保护
test_function()
{
#ifdef CHECK
BOOL BoolTest = test_function2();
#else
test_function2();
#endif
#ifdef CHECK
if (!BoolTest) {
misc_StartErrorReport();
misc_ErrorReport("\n test_function2: Input not indexed.\n");
misc_FinishErrorReport();
}
#endif
(这假设您仍然希望调用test_function2()
,即使没有定义CHECK
,可能是因为它的副作用-如果没有定义,那么您就不需要#else
部分,您可以将两个#ifdef
块合并为一个)。
发布于 2011-08-19 06:56:39
设置一个变量就是给它赋值(可能是隐式的)
int main(void) {
int local1, local2;
local1 = 0; /* local1 set to 0 */
local2 = 0; /* local2 set to 0 */
return 0;
}
在上面的程序中,这两个变量都被设置为一个值,但它们没有被使用。如果我将第二行替换为
int local2 = local1;
现在我已经使用了local1
变量--并且警告应该只有1。
若要消除该警告,请从代码中删除赋值。这可能会产生其他警告... :)
发布于 2011-08-19 06:56:49
这意味着你给一个变量赋了一个值,但是之后你再也不会在你的代码中读到这个值(因此就有了动词"set但not used")。例如:
int useful = 10;
int useless = 3;
if (useful) {
//Do stuff
}
请注意,您同时给出了useful
和useless
值,但只读取了useful
中的值。通常,当我收到此消息时,这意味着我忘记了某个变量,或者找到了一种方法来内联不再需要该变量的语句。
https://stackoverflow.com/questions/7115088
复制相似问题