在库FreeImagePlus中FreeImage.h
,有一个有趣#define
的东西似乎创建了 atypedef
和 anenum
同名:
#define FI_ENUM(x) typedef int x; enum x
这由预处理器扩展为如下代码:
typedef int FREE_IMAGE_FILTER;
enum FREE_IMAGE_FILTER {
FILTER_BOX = 0,
FILTER_BICUBIC = 1,
[...]
这是做什么的?typedef
a和 anenum
同名是否合法?而且不enum
兼容int
吗?为什么 FreeImage 会这样做?