gpt4 book ai didi

c - 为什么可以在不检查返回值的情况下调用返回值的函数?

转载 作者:行者123 更新时间:2023-12-04 11:12:24 26 4
gpt4 key购买 nike

我的意思是不将其值分配给变量,而是使用它。

例如:

int foo(void);
void main()
{
foo();
}
int foo()
{
return(5);
}

为什么我得不到任何警告

最佳答案

许多函数返回一个值并执行副作用,但它们通常只是为了它们的副作用而使用。

例如,printf() 打印输出并返回打印的字符数。但大多数时候返回值并不有趣,所以我们不会在任何地方分配它。 fclose() 返回一个成功指示符,但如果失败,程序通常无能为力,因此他们不会费心检查结果。

不得不写这样的东西会很乏味:

(void)printf(...);
(void)fclose(f);

一直如此,因此编译器通常不会警告在不使用结果的情况下调用非 void 函数。

在某些情况下这可能是个问题。有一些函数您确实应该使用返回值,但不使用它是一个常见的错误。例如,realloc() 返回新指针,但许多初学者只是假设它总是会调整旧指针指向的分配大小。

一些 IDE 可能有一些功能列表,出于这个原因,它们应该发出警告。但是编译器通常没有那么精确。

关于c - 为什么可以在不检查返回值的情况下调用返回值的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55049693/

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