va_list、va_start、va_arg、va_end等利用宏定义实现可变参数
来源:互联网 发布:淘宝店旺铺是什么 编辑:程序博客网 时间:2024/06/05 03:41
#include <stdio.h>//#include <stdlib.h>//#include <stdarg.h>//int sum(int n, ...);typedef void* va_list;#define _INTSIZEOF(arg) ((sizeof(arg) + sizeof(int) - 1)&(~(sizeof(int) - 1))) //字节对齐,针对32位系统#define va_start(arg,start) arg = (va_list)(((unsigned char *)&(start)) + _INTSIZEOF(start)) //利用函数栈,参数从右向左入栈,栈顶为第一个参数#define va_arg(arg,type) *(type*)arg;arg = (char *)arg + _INTSIZEOF(type); //修改栈顶指针#define va_end(arg) arg = NULL;int sum(char n, ...){int i = 0;int result = 0;va_list arg;va_start(arg, n);for (i = 0; i < n; i++){ result += va_arg(arg, char);}va_end(arg);return result;}int main(){ printf("%d", sum(2, 4, 5));getchar();return 0;}
0 0
- va_list、va_start、va_arg、va_end等利用宏定义实现可变参数
- C语言利用va_list、va_start、va_end、va_arg宏定义可变参数的函数
- va_list,va_start,va_arg,va_end可变参数
- C/C++中va_list,va_start,va_arg,va_end等可变参数宏的使用
- C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
- C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
- C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
- C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
- C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
- C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
- C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
- 函数可变参数va_list、va_start、va_arg、va_end原理及使用方法
- 可变参数列表(va_list,va_arg,va_copy,va_start,va_end)
- 可变参数列表的函数调用 va_list va_start va_arg va_end
- 理解可变参数va_list、va_start、va_arg、va_end原理及使用方法
- 理解可变参数va_list、va_start、va_arg、va_end原理及使用方法
- C语言中的可变参数:va_list ,va_start,va_arg,va_end
- 理解可变参数va_list、va_start、va_arg、va_end原理及使用方法
- LeetCode Integer to Roman
- 模拟遗传算法
- 感悟陈吉宁的讲话
- SCRUM+禅道+Jenkis(svn)+confluence
- 简单的文件拷贝程式码
- va_list、va_start、va_arg、va_end等利用宏定义实现可变参数
- oracle常用的查询语句
- Oracle CRS/GI 进程介绍
- [LeetCode] Longest Valid Parentheses 解题报告
- 算法导论学习之一步接一步笔记
- Missing number
- ORACLE权限管理调研笔记
- [LeetCode]154.Find Minimum in Rotated Sorted Array II
- windows驱动编程学习(2)--------第一个驱动 hello