gpt4 book ai didi

c - 警告 : may be used uninitialized in this function

转载 作者:行者123 更新时间:2023-11-30 20:46:44 28 4
gpt4 key购买 nike

使用新的 gcc 版本 6.X 遇到以下警告

警告:在此函数中可能会使用未初始化的“temp”[-Wmaybe-uninitialized]

代码:-

int temp;
if (logcat (MSPRO_P->regs[test],
byte, &temp, test) == FALSE){
memErrorMsgHistoryVa (MSPRO_MEMP, "Invalid Data Count 0 value");
MSPRO_P->flashCmdError = TRUE;
}

最佳答案

gcc 不应该警告将指向未初始化变量的指针传递给它不知道的函数(假设该函数将初始化它)。所以我很确定 gcc 了解有关 logcat 的信息,并且在其中检测到未初始化的使用。也许它被内联了等等。

示例:

$ cat > foo.c
static int
bar(int *a)
{
return *a + *a;
}

int
foo(void)
{
int x;
int y = bar(&x);
return x + y;
}
$ cc -Wall -c foo.c
$

这里,尽管对人类来说非常明显,但 gcc 实际上并不知道函数 bar 内部发生了什么。所以没有警告。

让我们帮助 gcc 了解发生了什么:

$ cc -O1 -Wall -c foo.c
foo.c: In function ‘foo’:
foo.c:4:12: warning: ‘x’ is used uninitialized in this function [-Wuninitialized]
return *a + *a;
~~~^~~~
foo.c:10:6: note: ‘x’ was declared here
int x;
^
$

仅仅打开优化可以帮助 gcc 看到发生了什么(可能发生了一些内联)。

从您显示的最小代码片段和警告消息来看,您似乎删除了实际上告诉您代码中问题发生的确切位置的部分,我得出结论,问题出在您的 logcat 函数。

关于c - 警告 : may be used uninitialized in this function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49685909/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com