C語言筆記 -預處理器的技巧(2)

前偏:C語言筆記 -預處理器的技巧(1)

如果想要將兩個非字串連在一起,可以用兩個#:##


#include <stdio.h>
#include <math.h>



#define Setup_list(name,...)                                                            \
        double *name  ## _list=(double[]){__VA_ARGS__,NAN}; \
        int name ##_len=0;                                                                 \
        for(name##_len=0;!isnan(name ## _list[name ##_len]);)       \
                    name ## _len ++;

int main()
{
    Setup_list(items,1,2,3,6);
    double sum=0;
    for(double *ptr=items_list;!isnan(*ptr);ptr++)
        sum+=*ptr;
    printf("sum:%g\n",sum);
}


輸出結果為12
---------------------------------------------------

也可以這樣使用

#define Length(in) in ## _len

int main()
{
     int sum=0;
     Setup_list(next_set,-1,2,4.5,0.1);
     for(int i=0;i<Length(next_set);i++);
        sum+=next_set_list[i];
     printf("sum:%g\n",sum);
}



此程式碼皆為"C成續設計新思維(第2版)"中的程式碼,在此做筆記 紀錄
如須刪除請告知 謝謝

這個網誌中的熱門文章

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

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

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