某些情况下调用函数为什么要在函数名前加“(void)”

Posted 哦摩西罗伊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了某些情况下调用函数为什么要在函数名前加“(void)”相关的知识,希望对你有一定的参考价值。

 

我们知道,在定义函数时,加在函数名前的“void”表示该函数没有返回值。但在调用时,在函数名前加“(void)”的作用又是什么呢?

最明显的一点就是表示程序并不关心调用该函数后的返回值是什么,比如函数strcpy,我们直接用“strcpy(des_str, src_str);”这样的形式来调用。strcpy()原型声明:char *strcpy(char* dest, const char *src);。“(void)strcpy(des_str,src_str);”这样的形式还真不多见!很多时候我们根本就不关心这个函数到底返回了一个什么样的值。

原因是这种写法不针对人,也不针对编译器,而是针对静态代码检测工具,它会把函数返回值作为一项检测标准。在某些大公司,比较重视代码规范,若在代码静态检测时需要检测该项。此时就需要用在被调用的函数(名)前加上“(void)”这种形式来告诉静态代码检测工具程序并非没有处理该函数的返回值,而是该处确实不需要处理它(该函数的返回值),不需要再对该处代码作此项检测。其实这和我们在代码中使用“#pragma warning (disable: XXXX)”的道理是一样的。

以上是关于某些情况下调用函数为什么要在函数名前加“(void)”的主要内容,如果未能解决你的问题,请参考以下文章

数据结构中若函数有return就一定要在函数名前写status吗?

static关键字的作用

函数基础2

python之类的相关名词解释

C/C++的Name Mangling

请问vc中为啥有的函数前缀为下划线,有的函数无下划线?两者有啥区别?