[C语言]支持命名参数的函数调用
来源:互联网 发布:php msgpack unpack 编辑:程序博客网 时间:2024/05/29 15:17
转载自:http://www.cnblogs.com/cbscan/archive/2012/10/26/2741817.html
对于参数较多的函数,如UI库函数,你很难去记忆每个位置的参数类型和意义,尤其在你的IDE比较简陋的开发环境下,尤为痛苦,可能你需要频繁的查询文档。
像Python这样语言,原生支持命名参数,如
def func(name, age): print name, agefunc('aaa', 1)func(age = 2, name = 'bbb')
可能你的函数有10个参数,其中大部分都可以有默认值,因此,如果你需要指定其中第3、第5个参数的值,而其他参数使用默认行为的时候,"func(arg3 = 3, arg5 = 5)"这样的调用很方便。
要在C89中实现命名参数的特性(我的编译器仍然是gcc 4.7.2),可以使用陈浩这篇文章提到的技巧。
下面是我写的宏:
#include <stdio.h>#define function(ret, funcName, ...) struct __args_##funcName{__VA_ARGS__}; ret funcName(struct __args_##funcName args)#define call(funcName, ...) func((struct __args_##funcName){__VA_ARGS__})function(void, func, const char *name; int age;){ printf("name:%s\n age:%d\n", args.name, args.age);}int main(){ call(func, "aa123", 10); call(func, .age = 5, .name = "abc456"); call(func, .name = "def789"); call(func, .age = 11);}
而且,相比普通函数,通过这种方式定义的函数用起来也基本是性能无损的。
- [C语言]支持命名参数的函数调用
- 在C语言中编写支持可变参数的函数
- c语言创建支持多参数多类型的函数
- C语言函数调用参数压栈的相关问题
- C语言函数调用传递参数时的类型退化
- C/C++函数调用时参数传递和命名规范
- C语言函数参数调用顺序
- C语言函数声明不写参数导致函数调用参数可以随便传的问题
- C语言的函数参数
- 支持命名参数的JdbcTemplate
- C语言函数的调用
- C语言中用有参数来调用无参数函数
- c/c++支持可变参数的函数
- C支持参数可变的函数
- c/c++支持可变参数的函数
- c/c++支持可变参数的函数
- c/c++支持可变参数的函数
- c/c++支持可变参数的函数
- CharacterController与Rigidbody
- Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
- C语言多维数组与多级指针
- 谁动了我的cpu——oprofile使用
- Linux文件系统域名解析实现
- [C语言]支持命名参数的函数调用
- Android JNI 编译注意事项
- 2013上半年总结
- ToolTip='<%#"需转客供数量:"+Eval("TransferHampooQty")%>'
- JSON(3):Java的Date类型转换为符合json语法的字符串遇到的问题及其解决办法
- 数据库
- C语言指针与数组之间的恩恩怨怨
- 宏定义#error等
- dataGridView设置数据字体格式