C语言默认参数值的实现
来源:互联网 发布:淘宝开店培训骗局 编辑:程序博客网 时间:2024/05/29 14:54
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 DEFARG(name, defval) ((#name[0]) ? (name + 0) : defval)
- int _f1(int i)
- {
- return 2*i;
- }
- #define f1(arg0) _f1(DEFARG(arg0, 0))
- int _f2(int i, int j)
- {
- return i + j;
- }
- #define f2(arg0, arg1) _f2(DEFARG(arg0, 0), DEFARG(arg1, 1))
- int main()
- {
- printf("%d\n", f1());
- printf("%d\n", f1(1));
- printf("%d\n", f2(,));
- printf("%d\n", f2(2,));
- printf("%d\n", f2(, 3));
- printf("%d\n", f2(4, 5));
- return 0;
- }
#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;}
void _getStr(char filename[]);
http://blog.csdn.net/broook/article/details/7208408
- C语言默认参数值的实现
- C语言 函数默认参数
- 在C语言中模拟含有默认参数的函数
- C语言默认传递int大小的参数
- c如何实现默认参数
- C语言可变参数函数的实现
- C语言可变参数函数的实现
- C语言可变参数的函数实现
- c语言中可变参数的实现
- C语言可变参数的实现详解
- C语言中可变参数的实现
- C语言可变参数的实现详解
- C语言可变参数的实现机制
- C语言可变参数函数的实现
- C语言中可变参数的实现
- C语言可变参数函数的实现
- C语言不定参数函数的实现
- 【C#】方法中默认参数的替换实现
- 数据库未关闭导致的故障分析
- java.lang.NoSuchMethodError: org.springframework.web.context.support.XmlWebApplication的错误
- 如何判断ios设备中是否安装了某款应用
- 字符设备的创建和上层应用如何使用
- c++编译器的工作
- C语言默认参数值的实现
- 11 个创新的网站滑动效果设计案例展示
- Qt Creator项目中使用qss
- JavaSE15_JDBC编程之Java链接Sqlite
- ios开发,将子线程获取的数据实时更新到UI
- 适配器设计模式
- ALSA声卡驱动中的DAPM详解之三:如何定义各种widget
- RSA加解密
- rhel中只有vim,升级到gvim的方法