在C语言中,是否可以为默认参数设置值?例如:
void display(int a, int b=10){
//do something
}
main(){
display(1);
display(1,2); // override default value
}
Visual Studio 2008 抱怨 "-void display(int a, int b=10)" 存在语法错误。如果这在 C 中不合法,那么有什么替代方案吗?请告诉我。谢谢。
在C语言中,是否可以为默认参数设置值?例如:
void display(int a, int b=10){
//do something
}
main(){
display(1);
display(1,2); // override default value
}
Visual Studio 2008 抱怨 "-void display(int a, int b=10)" 存在语法错误。如果这在 C 中不合法,那么有什么替代方案吗?请告诉我。谢谢。
默认参数是C ++的一个特性。
C语言没有默认参数。
在标准C中不可能实现。一个替代方案是将参数编码到函数名称中,例如:
void display(int a){
display_with_b(a, 10);
}
void display_with_b(int a, int b){
//do something
}
C语言中没有默认参数。
一种方法是传递NULL指针,然后如果传递了NULL,则将值设置为默认值。但是这样做很危险,除非你真的需要默认参数,否则我不建议使用。
示例:
function ( char *path)
{
FILE *outHandle;
if (path==NULL){
outHandle=fopen("DummyFile","w");
}else
{
outHandle=fopen(path,"w");
}
}
#include <stdio.h>
#define ADD_THREE(a,b,...) add_three_nums(a, b, (0, ##__VA_ARGS__))
int add_three_nums( int a, int b, int c)
{
return a + b + c;
}
void main( void )
{
printf("%d\n", ADD_THREE(3, 5));
printf("%d\n", ADD_THREE(4, 6, 8));
}
不是那样的...
你可以使用一个整数数组或可变参数,并在函数内部填充缺失的数据。但你会失去编译时检查。