标签:style blog http color get strong
from http://blog.csdn.net/pipisorry/article/details/25437893
C语言中没有參数默认值的概念,能够利用宏来模拟參数默认值:
(对于有多个參数的函数,调用时须要将參数列表中的每一个 " , "写出来,只是这样就能够把默认參数放在非默认參数之前)
下面代码在c下是不能通过的:
定义fun():
int fun(int a, int b = 10)
{
}
主函数代码:
int main()
{
}
..............................................................
编译时 fun(10) 调用会出错。注意这个代码在C++并不会错。
..............................................................
用宏改进后代码:
#include <stdio.h>
#define funi(a) fun( a, 10)
int fun(int a,int b )
{
}
int main()
{
}
结果: 20 20
#include <stdio.h> #define DEFAULT 40 /*默认參数值*/ #define FUN(A) fun(#A##"-") /*用于实现默认參数的宏*/ int f(int n) /*用于实验默认參数的函数*/ { return printf("%d\n",n); } int fun(const char *a) /*确定函数调用的函数,返回值类型要和实际须要调用的f()函数返回值类型一致*/ { int n; /*变量的类型要和f()函数參数的类型一样*/ if (a[0]==‘-‘) n=DEFAULT; else sscanf(a,"%d",&n); return f(n); } int main(void) { FUN(); FUN(67); return 0; }
标签:style blog http color get strong
原文地址:http://www.cnblogs.com/blfshiye/p/3797801.html