C語言筆記-用__VA_ARGS__ 製作Foreach

很常看到陣列或是結構內使用複合常量,例如:


char **strings=(char*[]){"one","two"}

現在將它放入一個For迴圈中。循環得第一部分聲明了這個字串數組,然後開始便歷整個陣列,直到最後的NULL標記。



#include 
#include 

typedef char* string;

int main(void)
{
 string str="thresad";
 for(string *list=(string[]){"111",str,"ropw",NULL};
  *list;
  list++)
  printf("%s
",*list); 
}


這樣的程式碼不易閱讀,很雜,所以用宏定易簡化:



#include 
#include 

typedef char* string;

#define Foreach_string(iterator,...)
 for(string *iterator=(string[]){__VA_ARGS__,NULL};*iterator;iterator++)
 
int main(void)
{
 string str="two";
 Foreach_string(i,"one",str,"three"){
  printf("%s
",*i);
 }
}





此文章內容參考"21 century c"一書,在此做筆記
如須刪除請告知 謝謝

留言

這個網誌中的熱門文章

FreeRTOS學習筆記 (二)-任務創建和刪除(xTaskCreate及vTaskDelete)

FreeRTOS學習筆記 (三)-時間管理vTaskDelay()及vTaskDelayUntil()

MCU的硬體基礎知識(2) 電晶體的應用