野火《LwIP 應用開發實戰指南》小白學習筆記

近日開始閱讀野火《LwIP 應用開發實戰指南》,遇到不懂的地方寫下筆記,與同好分享。本人水平有限,如有不對,請留言指正。

第一個問題: 對動態內存池的枚舉宏定義的理解

野火的解釋如圖:

 我用例程來理解上述野火的解釋:(編譯環境ubuntu18.04)

#include <stdio.h>
enum spectrum {
	red,     //0
	orange,  //1
	yellow,  //2
	green,   //3
	blue,    //4
	violet   //5
};
typedef enum{
//爲演示方便,去掉了size參數
#define LWIP_MEMPOOL(name,num,desc) MEMP_##name,
LWIP_MEMPOOL(RAW_PCB,MEMP_NUM_RAW_PCB,"RAW_PCB")//0
LWIP_MEMPOOL(UDP_PCB,MEMP_NUM_UDP_PCB,"UDP_PCB")//1
LWIP_MEMPOOL(TCP_PCB,MEMP_NUM_TCP_PCB,"TCP_PCB")//2
//LWIP_MEMPOOL(MY_PCB,MEMP_NUM_MY_PCB,"MY_PCB")
MEMP_MAX					
}memp_t;
void main()
{
 printf("color.blue=%d\n",blue);
 printf("MEMP_MAX=%d\n",MEMP_MAX);
}

運行結果:

memp_tm枚舉體中的MEMP_MAX值的大小根據LWIP_MEMPOOL語句多少自動增加,如果你把LWIP_MEMPOOL(MY_PCB,MEMP_NUM_MY_PCB,"MY_PCB")前的註釋取消,那麼MEMP_MAX=4

爲演示方便,去掉了size參數。

#define LWIP_MEMPOOL(name,num,desc)中只有name參數在本例的枚舉中有用,僅爲演示使用,其它參數在LWIP中還是有用的。

 本文涉及的知識點有:c枚舉類型

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章