我正在从FUSE读取以下示例代码:

http://fuse.sourceforge.net/helloworld.html

我很难理解以下代码片段的作用:

static int hello_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
                         off_t offset, struct fuse_file_info *fi)
{
    (void) offset;
    (void) fi;

具体来说,就是(void)"变量名"这个词.我以前从未在C程序中见过这种构造,所以我甚至不知道该在谷歌搜索框中输入什么.我目前最好的猜测是,它是未使用函数参数的某种说明符?如果有人知道这是什么并且能帮我,那就太好了.谢谢

推荐答案

它解决了一些编译器警告问题.如果不使用函数参数,某些编译器会发出警告.在这种情况下,您可能故意不使用该参数,出于某种原因无法更改接口,但仍然希望关闭警告.(void)铸造构造是一个不可操作的,可以让警告消失.下面是一个使用clang的简单示例:

int f1(int a, int b)
{
  (void)b;
  return a;
}

int f2(int a, int b)
{
  return a;
}

使用-Wunused-parameter标志和presto进行构建:

$ clang -Wunused-parameter   -c -o example.o example.c
example.c:7:19: warning: unused parameter 'b' [-Wunused-parameter]
int f2(int a, int b)
                  ^
1 warning generated.

C++相关问答推荐

C语言中的“对象”是什么?

在没有辅助函数的情况下转换函数指针参数

libcurl 放置数据流而不是文件

为什么下面的循环展开会导致错误的结果?

将 char 转换为二进制字符串,反之亦然

DirectX11 与多视频适配器 (GPU) PC

如何让我的应用程序找到 gettext 翻译?

我怎样才能在另一个宏中使用一个宏来将宏的定义连接到某个东西? C/C++

如何正确拦截 Linux 内核 5.* 中的系统调用?

使用 strstr 查找子字符串的所有实例会导致奇怪的字符串格式

char 数组是否保证为空终止?

假设指向同一个变量的两个指针是非法的/UB,为什么 C 编译器不能优化更改 const 指针的值?

为什么需要为每个操作系统重新编译 C/C++?

为什么 long long 2147483647 + 1 = -2147483648?

为什么 C++ 中的字符串文字 (char*) 必须是常量?

在 C/C++ 中获得正模的最快方法

为什么不鼓励静态链接 glibc?

if-else 块中的“if (0)”块的目的是什么?

“for”循环内的“for”循环可以使用相同的计数器变量名吗?

使用指向过去的 malloc 的指针是否定义明确?