【C語言】函數不定長參數



前言

  • 基於頭文件 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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM