Difference Between typedef and #define

博客介绍了宏定义和typedef定义类型名的区别。宏定义的类型名可与其他类型说明符扩展,typedef定义的则不行;typedef定义的名称为声明中的每个声明符提供类型,宏定义在展开后可能使声明的变量类型不同,而typedef声明的变量类型相同。

first, You can extend a macro typename with other type specifiers, but not a typedef 'd typename.

That is,

#define peach int

unsigned peach i; /* works fine */

typedef int banana;

unsigned banana i; /* Bzzzt! illegal */

Second, a typedef 'd name provides the type for every declarator in a declaration.

#define int_ptr int * int_ptr chalk, cheese;

After macro expansion, the second line effectively becomes: int * chalk, cheese; This makes chalk and cheese as different as chutney and chives: chalk is a pointer-to-an-integer, while cheese is an integer.

In contrast, a typedef like this:

typedef char * char_ptr;

char_ptr Bentley, Rolls_Royce;

declares both Bentley and Rolls_Royce to be the same. The name on the front is different, but they are both a pointer to a char.

Block ack session data transfer During the data transfer phase, the originator may transmit a block of QoS Data frames, either as a burst, separated by SIFS or RIFS, or as part of an A-MPDU. Each QoS Data frame in the block has its Ack Policy field set to Block Acknowledgement. The recipient maintains a scoreboard to track which MPDUs have been received correctly. The data block maybewhollycontainedwithinasingle TXOPoritmaystraddlemultiple TXOPs. The data block and TXOP are not coupled in any way. After transferring the data block, the originator sends a BAR frame. This frame includes a starting sequence number (SSN), which is the sequence number of the oldest MSDU in the block for which an acknowledgement is needed. On receiving the BAR, the recipient performs two functions. First, it prepares a BA response using the scoreboard for that session. The scoreboard is converted into a bitmap where the first bit represents the MPDU with the same sequence number as the SSN from the BAR frame and subsequent bits indicate successive sequence numbers. The bitmap thus forms an array indexed by sequence number with the SSN as starting reference. Second, it examines its reorder buffer for MPDUs with sequence numbers that precede the SSN value. These MPDUs are either reassembled into complete MSDUs and forwarded to the higher layers or discarded if complete MSDUs cannot be created. The primary difference between immediate and delayed block ack is in the timing with which the recipient responds to the BAR. Under immediate block ack, the recipient responds to the BAR with a BA frame after SIFS. Under delayed block ack, the recipient responds to the BAR with an ACK. Later, in a separate channel access, the recipient generates a BA frame and sends it to the originator. The originator responds to the delayed BAwith an ACK. Immediate block ack provides better performance while delayed block ack was defined for ease of implementation. With delayed block ack, the recipient has more time to process the BAR and is suited to implementations where the bulk of the BA processing is performed in software on the host system. On receiving the BA, the originator releases MPDUs that are acknowledged and requeues MPDUs that were not acknowledged for retransmission provided their time to live has not been exceeded
08-19
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值