最近做RTP流推送项目,准备在别人的基础上进行大改,全部采用在jrtplib库源代码基础上实现,发现对jrtplib很多数据成员的修改都失效,比如调用 SetMaximumPacketSize函数修改成员变量maxpacksize为1400,调用函数后发现maxpacksize变为很大的数如35345234523444,反反复复调试发现修改不成功,最后发现在rtp包含头文件前有个包含自定义的头文件,而在自定义的头文件里面有 #pragma pack(1) 语句,用以定义RTP头取消对齐,而在定义完成后没有写 #pragma pack(pop) 取消,导致后面所有包含rtp头文件均取消对齐,所以引起赋值失效。
正确的使用方式:
#pragma pack(push)
#pragma pack(1)
...
#pragma pack(pop)