我正在从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++相关问答推荐

来自stdarg.h的c中的va_args无法正常工作<>

在#include中使用C宏变量

C语言编译阶段与翻译阶段的关系

在列表中插入Int指针(C)

当输入负数时,排序算法存在问题

在C++中使用函数指针的正确语法

Setenv在c编程中的用法?

实现简单字典时C语言中的段错误

等同于铁 rust 的纯C语言S未实现!()宏

为什么用非常数指针变量改变常量静态变量时会出现分段错误?

从C文件中删除注释

用C++高效解析HTTP请求的方法

与外部SPI闪存通信时是否应禁用中断?

被调用方函数内部的C-Struct变量,它是指针还是无关紧要

C中2个数字的加法 - 简单的人类方法

将数组返回到链表

如何转义包含指令中的字符?

为什么使用 C 引用这个 char 数组会导致 Stack smasing?

如何在C中以0x格式打印十六进制值

一次完成函数调用和变量创建