可变参数列表的宏和<stdarg.h>实现函数的可变参数列表
2015-04-07 13:39
162 查看
标准头文件<stdio.h>中的printf()函数很诡异,它有一个可变的参数列表。
下面是自己实现的printf()函数。
...与__VA_AGRS__
下面是自己实现的printf()函数。
#include <stdio.h> /* printf, vprintf*/ #include <stdarg.h> /* va_list, va_start, va_copy, va_arg, va_end */ #include <stdint.h> void myprintf(const char * format, ...) { va_list vl; va_start(vl, format); vprintf(format, vl); va_end(vl); } int main () { uint8_t x = 1, y = 2; float d = 3.1415926f; myprintf("Hello world !\n"); myprintf("these numbers are: %hhd %hhd %f\n", x, y, d); return 0; }
...与__VA_AGRS__
#include <stdio.h> #include <stdint.h> /* 可变宏:...和__VA_ARGS__ */ #define myprintf(...); { \ printf("Do something before it.\n"); \ printf(__VA_ARGS__); \ printf("Do something after it.\n"); \ } void main() { uint8_t x = 1, y = 2, z = 3; myprintf("x=%hhu,y=%hhu,z=%hhu\n", x, y, z); }
相关文章推荐
- error: 函数调用缺少参数列表;请使用“&BinTree<char>::_PrintNode”创建指向成员的指针
- C使用 stdarg 宏来实现函数的可变参数列表
- php实现函数可变参数列表
- <python>Python的函数参数传递:传值?引用?
- 【C语言】printf函数的简单实现(可变参数列表)
- <C++> 可变参数宏定义
- 可变参数列表通过宏来实现(头文件stdarg.h)
- 可变参数列表:简单printf函数的实现
- 可变参数列表及printf函数的实现
- 可变参数列表函数实现
- c++ 头文件<cwchar>中常见函数的实现!!!
- #include<stdarg>下va_start,va_end系列函数用法
- c++ 头文件<cstring>(或者string.h)中的常见函数的实现!
- c#简单实现二维数组和二维数组列表List<>的转置
- C中可变参数列表函数的实现
- 可变参数列表及printf函数的实现
- <笔试><面试>C/C++单链表(最综合)最全工程从建立到相关函数实现
- 可变参数列表函数实现
- 创建函数利用可变参数列表的形式模拟实现printf的功能
- ArrayAdapter<T>,Filter实现列表搜索