(void)“variables名”在C函数的开头是做什么的?

我正在阅读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)“variables名”的东西。 我之前从来没有在C程序中看到过这种构造,所以我甚至不知道要在Googlesearch框中input什么内容。 我目前最好的猜测是,它是某种未使用的函数参数的说明符? 如果有人知道这是什么,可以帮助我,这将是伟大的。 谢谢!

它围绕着一些编译器警告。 如果不使用函数参数,某些编译器会发出警告。 在这种情况下,您可能故意不使用该参数,由于某种原因无法更改界面,但仍然要closures警告。 那(void)铸造build筑是一个没有运行,使警告消失。 这是一个使用clang的简单例子:

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

使用-Wunused-parameter标志和presto构build:

 $ 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. 

它在代码方面什么都不做。

在这里告诉编译器,这些variables(在这种情况下是参数)是未使用的,以防止-Wunused警告。

另一种方法是使用:

 #pragma unused