十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
最近阅读工程代码的时候,同一个函数,不同场景调用时,输入的实参个数不一样,但是编译却没有问题。查看函数的定义,相关的C文件里并没有给形参指定默认值,这就很奇怪了。
创新互联专注于企业营销型网站建设、网站重做改版、黔西南州网站定制设计、自适应品牌网站建设、H5场景定制、成都商城网站开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为黔西南州等各大城市提供网站开发制作服务。
最终,发现在函数相关的头文件里有给形参指定默认值。这就能解释通为什么形参和实参个数不一致,编译能正常通过的问题了。下面是示例代码。
/*parainput.c 文件内容*/
#include
void sum(int a,int b,int c)
{
int result = a + b + c;
printf("result = %d\n",result);
}
/*parainput.h 文件内容*/
#ifndef _PARAINPUT_H
#define _PARAINPUT_H
void sum(int a,int b=1,int c=2);
#endif
/*main.c 文件内容*/
#include
#include "parainput.h"
void test_01(void)
{
int a = 10;
sum(a);
return;
}
void test_02(void)
{
int a = 10,b = 20;
sum(a,b);
}
void test_03(void)
{
int a = 10,b = 20,c = 30;
sum(a,b,c);
}
int main(void)
{
test_01();
test_02();
test_03();
return 0;
}
用G++进行编译,最终运行结果如下。
result = 13
result = 32
result = 60
--------------------------------
Process exited after 0.006126 seconds with return value 0
请按任意键继续. . .