- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
1
文档仅供参考
MTK优美代码赏析8:可变参数的C函数
对于可变参数函数,自己一直以来都很关注,尤其当自己刚才C#上转到C时,一度曾研究C上的面向对象,将类似printf的函数归类为面向对象里的函数多态,当时只是一个主观感受。今日仔细看了下代码的实现,发现使用C提供的公共接口是可以实现的,但这些接口是如何实现的就不知了。。。
文件:stdarg.h
gcc中的定义为:
/*
/*Definethestandardmacrosfortheuser,ifthisinvocationwasfromtheuserprogram./*Definethestandardmacrosfortheuser,
euserprogram.*/
*/
ifthisinvocationwasfromth
#defineva_start(v,l)__builtin_va_start(v,l)
#defineva_end(v)__builtin_va_end(v)
#defineva_arg(v,l)__builtin_va_arg(v,l)
#if!defined(__STRICT_ANSI__)||__STDC_VERSION__+0>=199900L
#defineva_copy(d,s)__builtin_va_copy(d,s)
#endif
2
文档仅供参考
下面看dbg_print(char*fmt,…)函数实现,部分内容摘自:《用库函数stdarg.h实现函
数参数的可变》://blog.sina/s/blog_4ce3d23e0100efm3.html
dbg_print
dbg_print代码
其他地
其他地方有对这个宏的定义为:
代码
typedefint*va_list[1];
#defineva_start(ap,parmN)(void)(*(ap)=__va_start(parmN))
#defineva_arg(ap,type)__va_arg(*(ap),type)
#defineva_copy(dest,src)((void)(*(dest)=*(src)))
#defineva_end(ap)((void)(*(ap)=0))
#undeftolower
#undefisdigit
#defineisdigit(c)(((c)>=’0′)&&((c)<=’9′))
#definetolower(c)(((c)>=’A’&&(c)<=’Z')?((c)+0×20):(c))
您可能关注的文档
- macOS使用手册二(AppleID和iCloud、连接、观看和阅读、订阅服务、隐私和安全性、辅助功能、配件和硬件).pdf
- mem系列函数实现.docx
- MTK socket编程的一些经验.docx
- mtk平台软件调试方法与技巧.pdf
- MTK中的nvram的操作实现.docx
- MTK资源编译加载时找不到模块的头文件.docx
- MTV-拍摄计划及脚本.docx
- N-N-二异丙基乙胺安全技术说明.docx
- PMP第六版5大过程组49个过程.docx
- 1.3 创造力的要素和开发提高创造力 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修9创造力开发与技术发明.docx
- 1.2 创新是技术发展的核心 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修9 创造力开发与技术发明.docx
- 4.2 做一名优秀的创业者 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修8:技术与职业探索.docx
- 2.1 职业的核心技能 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修8:技术与职业探索.docx
- 2.2 认识职业素养 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修8:技术与职业探索.docx
- 3.1 认识职业与认识自我 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修8:技术与职业探索.docx
- 3.1 常用工具与创新工具 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修9创造力开发与技术发明.docx
- macOS使用手册二(AppleID和iCloud、连接、观看和阅读、订阅服务、隐私和安全性、辅助功能、配件和硬件).pdf
- 安全管理制度与安全技术的结合与创新.pptx
- 财务管理制度与市场竞争的一体化.pptx
- 城市工程质量验收的工程质量与组织管理.pptx
文档评论(0)