我正在从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;
Run Code Online (Sandbox Code Playgroud)
具体来说,(void)"变量名"的东西.我以前从未在C程序中看到过这种结构,所以我甚至不知道要在Google搜索框中添加什么.我目前最好的猜测是它是未使用的函数参数的某种说明符?如果有人知道这是什么,可以帮助我,那将是伟大的.谢谢!
抑制编译器(在本例中为gcc)的最佳/最佳方法是什么,如"未使用的变量x" - 警告?
我不想给gcc提供任何特定的标志来删除所有这些警告,仅用于特殊情况.
可能重复:
将未使用的返回值转换为void
我读了一些源代码,并在其中声明了接口类中的许多虚函数,并默认实现如下:
virtual bool FunctionName(TypeName* pointer)
{
(void)pointer;
return true;
}
Run Code Online (Sandbox Code Playgroud)
请问在默认实现中将指针转换为void的目的是什么?
我正在看一些具有如下函数的代码:
void f(A* a, B& b, C* c)
{
(void)a;
(void)b;
(void)c;
}
Run Code Online (Sandbox Code Playgroud)
每行开头的(void)究竟是什么?
我最近遇到了这段代码,我很困惑,它是做什么用的?
在C编程语言中,将变量void类型转换为数据类型是什么意思?这有什么作用?
如果执行了诸如类型转换或加法之类的表达式,而结果没有立即分配给某个变量,则该结果将丢失。您为什么要这么做?这似乎是一个无用的表达。
代码示例:
int main(int argc, char *argv[])
{
/* void unused vars */
(void) argc;
(void) argv;
// more code here
return 0;
}
Run Code Online (Sandbox Code Playgroud)
看来作者没有使用这些变量,但是为什么将它们转换为void数据类型?您最好将它们转换为int数据类型。