C与C++的细微区别——省略形式参数名

 

有时候为了编译通过,会写一些打桩的接口,桩接口中的从参数都是不用的,所以对于不用的参数习惯是注释掉,或者省略掉,但是最近这样做确遇到了一个错误

error: parameter name omitted

这里参考了http://blog.sina.com.cn/s/blog_5f35912f0100vvo1.html,这里作者进行了解释。
在函数声明中:
无论是C还是在C++,都可以省略形式参数名。
但是,通常都不建议省略形式参数名。

在函数定义中:
1. 当需要使用形式参数的时候,显然,必须给形式参数命名。

2. 当不需要使用形式参数的时候,C与C++有微小差异:
—— C不能省略形式参数名, 即使不使用。
—— C++可以省略形式参数名如果不使用。

下面是例子:demo6.c
int ommit(int a, int /*b*/)
{
    return 0;
}
int main()
{
   ommit(1, 2);
   return 0;
}

  

 # g++ -Wall -Wconversion -Wsign-compare demo6.c -o demo6

以C++方式编译,不会报错,但是以C方式会报错。
# gcc -Wall -Wconversion -Wsign-compare demo6.c -o demo6
demo6.c: In function ‘ommit’:
demo6.c:7:1: error: parameter name omitted
int ommit(int a, int /*b*/)
^

所以下次缺省参数的时候,先看下是C文件还是C++文件

posted @ 2020-02-26 14:19  ren_zhg1992  阅读(323)  评论(0)    收藏  举报