我最近遇到了一个相当不寻常的编码约定,其中对返回"void“的函数的调用以(void)为前缀。
例如:
(void) MyFunction(); 它与函数调用有什么不同,比如:
MyFunction(); 它有没有什么优势,或者它是另一个不必要的,但有某种编码约定?
发布于 2010-06-14 16:51:46
像printf()这样的一些函数返回的值在实际代码中几乎从未使用过(在printf中,返回的是打印的字符数)。但是,一些工具,如lint,预期如果函数返回一个值,则必须使用该函数,除非您编写以下代码,否则会出现错误:
int n = printf( "hello" );使用void造型:
(void) printf( "hello" );是一种告诉这些工具你真的不想使用返回值的方式,从而使它们保持安静。如果您不使用这些工具,就不需要麻烦了,而且在任何情况下,大多数工具都允许您将它们配置为忽略来自特定函数的返回值。
发布于 2010-06-14 16:46:59
不,没有任何区别--转换为void的是函数的返回值。
我要说的是,你想显式地表明你没有使用返回值(你调用返回值是为了副作用),这是有道理的,但由于函数已经有了void return,所以它没有多大意义。
发布于 2010-06-14 16:55:13
如果函数返回了void可以避免的东西(!)一些编译器(或lint工具)上的警告(实际上我无法让gcc警告我返回值丢失);但更重要的是,它清楚地表明返回值是被故意“丢弃”的(而不是错误的)。
https://stackoverflow.com/questions/3035927
复制相似问题