相关疑难解决方法(0)

忽略C中的返回值

最近,我开始使用lint进行静态代码分析.我有时得到的一个警告就是这个问题.比方说,我有以下功能:

uint32_t foo( void );
Run Code Online (Sandbox Code Playgroud)

让我们说我故意忽略函数的返回值.为了使警告消失,人们可以写

(void) foo();
Run Code Online (Sandbox Code Playgroud)

我的问题是,编写这样的代码的"正确"方法是什么,我应该像往常一样继续,因为编译器不会抱怨它,或者我应该使用void来清楚,所以其他代码维护者会知道我刻意忽略了返回值.

当我看到这样的代码(带有空白)时,我觉得很奇怪......

c coding-style lint return-value

41
推荐指数
6
解决办法
3万
查看次数

C99内联函数在.c文件中

我在.c中定义了我的函数(没有头声明),如下所示:

inline int func(int i) {
 return i+1;
}
Run Code Online (Sandbox Code Playgroud)

然后在下面的同一个文件中我使用它:

...
i = func(i);
Run Code Online (Sandbox Code Playgroud)

在链接期间,我得到了"未定义的引用'func'".为什么?

c c99

36
推荐指数
2
解决办法
2万
查看次数

在函数调用之前使用(void)

可能重复:
将未使用的返回值转换为void

(void)例如,在函数调用之前的目的是什么

(void)func1();
Run Code Online (Sandbox Code Playgroud)

我认为这和简单地调用一样 func1();

因此,(void)调用只是为了让其他程序员知道返回类型将被忽略,例如,如果func1()有返回类型int,或者编译器是否可能对函数执行某些优化?也许完全背后还有另一个原因 - 它甚至是合法的C++,还是在某些遗留代码中看到的C的残余.

谢谢

c c++

30
推荐指数
3
解决办法
1万
查看次数

忽略返回值(C 编程)

几天前我刚刚开始学习 C 编程,我正在尝试从 Kattis (open.kattis.com) 网站上找到一些问题。一路上我想出了这个问题,但我并不真正理解它的含义。

//two stones

#include <stdio.h>

int main()
{ 
int n,x=2;

printf("The number of stones placed on the ground is ");
scanf("%d",&n);

if (n%x != 0)
{
    printf("The winner of the game is Alice! \n");
}
else
{
    printf("The winner of the game is Bob! \n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

这出现了>>

警告:忽略 scanf 的返回值,使用属性 warn_unused_result [-Wunused-result] 声明关于 scanf("%d",&n);

谁能解释这有什么问题以及如何纠正这个问题?谢谢。

c

5
推荐指数
1
解决办法
2465
查看次数

警告:忽略使用属性 warn_unused_result [-Wunused-result] 声明的“write”的返回值

用 C 编译我的程序时出现此错误。

警告:忽略使用属性 warn_unused_result [-Wunused-result] 声明的“write”的返回值

在我所有的呼吁写作。

FLAGS : -g -Wall -Werror -Wextra -g -O2 // or -Ofast (same result)
Run Code Online (Sandbox Code Playgroud)

海湾合作委员会版本:5.4

当我尝试使用 -O2 或 -Ofast 进行编译时会发生这种情况。

有人可以解释我,为什么这不起作用?

谢谢 :)

c

3
推荐指数
1
解决办法
4574
查看次数

标签 统计

c ×5

c++ ×1

c99 ×1

coding-style ×1

lint ×1

return-value ×1