首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >警告:变量已设置但未使用[-Wunused but - set - variable ]

警告:变量已设置但未使用[-Wunused but - set - variable ]
EN

Stack Overflow用户
提问于 2011-08-19 06:52:19
回答 5查看 62.9K关注 0票数 6

gcc 4.6.1中编译C源代码时,我收到了以下警告。

代码语言:javascript
运行
复制
   warning: variable set but not used [-Wunused-but-set-variable]

我提到了这个链接Wunused,但我能确切地知道是什么导致了这个warning.Would,有谁能告诉我更多细节,是什么导致了这个警告,我们怎样才能摆脱它?

编辑我有一个下面的代码片段。编译程序会显示上述警告。你能建议我如何纠正它吗?

代码语言:javascript
运行
复制
   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.
   // } 
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-19 12:57:58

您需要在BoolTest的声明和初始化过程中包含预处理器保护

代码语言:javascript
运行
复制
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块合并为一个)。

票数 6
EN

Stack Overflow用户

发布于 2011-08-19 06:56:39

设置一个变量就是给它赋值(可能是隐式的)

代码语言:javascript
运行
复制
int main(void) {
    int local1, local2;
    local1 = 0; /* local1 set to 0 */
    local2 = 0; /* local2 set to 0 */
    return 0;
}

在上面的程序中,这两个变量都被设置为一个值,但它们没有被使用。如果我将第二行替换为

代码语言:javascript
运行
复制
    int local2 = local1;

现在我已经使用了local1变量--并且警告应该只有1。

若要消除该警告,请从代码中删除赋值。这可能会产生其他警告... :)

票数 4
EN

Stack Overflow用户

发布于 2011-08-19 06:56:49

这意味着你给一个变量赋了一个值,但是之后你再也不会在你的代码中读到这个值(因此就有了动词"set但not used")。例如:

代码语言:javascript
运行
复制
int useful = 10;
int useless = 3;
if (useful) {
    //Do stuff
}

请注意,您同时给出了usefuluseless值,但只读取了useful中的值。通常,当我收到此消息时,这意味着我忘记了某个变量,或者找到了一种方法来内联不再需要该变量的语句。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7115088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档