前言
- 基於頭文件 stdarg.h
- 基於 STM32
- 基於 C
- 如果讀者對指針和堆棧的知識點比較熟悉,本筆記就一眼飄過,只需要看看怎么用就可以了哈哈。
語法
- 主要的宏
- va_list
- va_start
- va_arg
- va_end
va_list
- 不同平台,該宏可能不一樣,以下是 STM32+C
- void *
- 這個指針就是一張白紙,任何類型的指針都能賦值給 void* 類型。
typedef struct __va_list { void *__ap; } va_list;
va_list args;
- va_list 用於存放可變長參數的
va_start
- 獲取可變參數列表的第一個參數的地址
- args 必須為 va_list 類型
- str 參數必須為可變長參數(...)的前一個參數的地址
va_start(args,str);
va_arg
- 獲取可變參數的當前參數
- 返回指定類型
- 並將指針指向下一參數
- 第二個參數為類型,即int、char char*之類的
a = va_arg(args,int);
va_end
- 空va_list可變參數列表
a = va_end(args);