解决 ffmpeg 与 live555 宏定义冲突

一个工程同时使用了 ffmpeg 和 live555,结果一不注意就混乱了……原因如下:

1
2
3
4
5
6
7
8
9
10
11
// ffmpeg 的 error.h 里 include 了 errno.h,有以下定义:
#define EAGAIN 11


// 而 live555 的 NetCommon.h 里有以下定义:
#ifdef EAGAIN
#undef EAGAIN
#endif

// WSAEWOULDBLOCK == 10035
#define EAGAIN WSAEWOULDBLOCK

很明显,live555 这么做,违背了面向对象的基本特征——封装,这种平台相关的抽象应该封装在源文件里面,而不是放在头文件。挪个位置即可。

如果您使用微信,也可以关注公众号 UMU618,在公众号文章里评论。