lwip【2】 lwip--有趣的数组定义(预处理)
来源:互联网 发布:狼雨seo官网 编辑:程序博客网 时间:2024/06/09 15:31
在全局定义的宏和在一个函数内部定义的宏有什么不同?是不是和变量的定义含义差不多,作用域不同?还是有其他的什么差别?
宏定义的作用域是同文件内从定义开始起作用 直到取消定义
static u8_t memp_memory[MEM_ALIGNMENT - 1
#define LWIP_MEMPOOL(name,num,size,desc) + ( (num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size) ) )
#include "lwip/memp_std.h"
];
上面红色部分的即是一个宏定义,可单独拿开等同下面
#define LWIP_MEMPOOL(name,num,size,desc) + ( (num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size) ) )
static u8_t memp_memory[MEM_ALIGNMENT - 1
#include "lwip/memp_std.h"
];
memp_std.h文件中部分代码
#if LWIP_RAW
LWIP_MEMPOOL(RAW_PCB, MEMP_NUM_RAW_PCB, sizeof(struct raw_pcb), "RAW_PCB")
#endif /* LWIP_RAW */
#if LWIP_UDP
LWIP_MEMPOOL(UDP_PCB, MEMP_NUM_UDP_PCB, sizeof(struct udp_pcb), "UDP_PCB")
#endif /* LWIP_UDP */
#if LWIP_TCP
LWIP_MEMPOOL(TCP_PCB, MEMP_NUM_TCP_PCB, sizeof(struct tcp_pcb), "TCP_PCB")
LWIP_MEMPOOL(TCP_PCB_LISTEN, MEMP_NUM_TCP_PCB_LISTEN, sizeof(struct tcp_pcb_listen), "TCP_PCB_LISTEN")
LWIP_MEMPOOL(TCP_SEG, MEMP_NUM_TCP_SEG, sizeof(struct tcp_seg), "TCP_SEG")
#endif /* LWIP_TCP */
#undef LWIP_MEMPOOL
数组中的宏定义,可单独拿出来,与数组无关,因为用#define定义的宏是在预处理阶段进行处理的,而非编译时期进行
预处理,后面的include也是预处理。可以根据前面进行展开。
如果LWIP_RAW定义了
memp_memory[[MEM_ALIGNMENT - 1+ ( (MEMP_NUM_RAW_PCB) * (MEMP_SIZE + MEMP_ALIGN_SIZE(sizeof(struct raw_pcb)) ) )]
如果LWIP_UDP定义了
memp_memory[[MEM_ALIGNMENT - 1+ ( (MEMP_NUM_UDP_PCB) * (MEMP_SIZE + MEMP_ALIGN_SIZE(sizeof(struct udp_pcb)) ) )]
如果两者都定义了
memp_memory[[MEM_ALIGNMENT - 1+ ( (MEMP_NUM_RAW_PCB) * (MEMP_SIZE + MEMP_ALIGN_SIZE(sizeof(struct raw_pcb)) ) ) + ( (MEMP_NUM_UDP_PCB) * (MEMP_SIZE + MEMP_ALIGN_SIZE(sizeof(struct udp_pcb)) ) )]
说明这个数组根据你是否定义LWIP_RAW等宏(这些宏实际可看做TCPIP的各个模块,根据需要选择),数组的长度是可变的。
#define MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )
#ifdefine MIN (正确)
#ifdefine MIN(x,y) (错误)
unsigned char a[]={
#define pi 3.14 //这个可以宏可以看做与数组无关
1,2,3,4
};
- lwip【2】 lwip--有趣的数组定义(预处理)
- lwip--有趣的数组定义(预处理)
- lwip--有趣的数组定义(预处理)
- lwip--有趣的数组定义(预处理) ——转
- lwip
- lwip
- LWIP
- DEBUG_Printf 的一种定义(lwip)
- LM3S LWIP的一个配置文件2
- LWIP程序OPT.h头文件的各种定义
- LWIP程序OPT.h头文件的各种定义
- lwip移植的问题
- Lwip的UDP例程
- lwip的特点
- STM32的lwip使用说明
- LWIP的keepalive功能
- stm32 lwip的DHCP
- LWIP的调试方式
- struts2学习(一)
- 黑马程序员——Java基础---反射
- 解决error C2011: 'fd_set' : 'struct' type redefinition的方法
- CSS设置文字样式——模拟Google
- NCRE三级网络技术考试——八,九月总结
- lwip【2】 lwip--有趣的数组定义(预处理)
- [Java]Http报文详解
- Android M版本和非M版本动态权限适配方案
- 侧滑菜单的功能实现
- gson解析json
- lwip【3】LWIP ethernetif.c分析
- 剑指offer—表示数值的字符串
- 有关http的内容
- sublime3.0配置node.js环境