我读到很难找出元素是否在枚举中。那么最好的方法是什么?
例如,以下代码来自Linux内核2.6.32:
enum v4l2_colorfx {
V4L2_COLORFX_NONE = 0,
V4L2_COLORFX_BW = 1,
V4L2_COLORFX_SEPIA = 2,
};
这个来自2.6.38版本:
enum v4l2_colorfx {
V4L2_COLORFX_NONE = 0,
V4L2_COLORFX_BW = 1,
V4L2_COLORFX_SEPIA = 2,
V4L2_COLORFX_NEGATIVE = 3,
V4L2_COLORFX_EMBOSS = 4,
V4L2_COLORFX_SKETCH = 5,
V4L2_COLORFX_SKY_BLUE = 6,
V4L2_COLORFX_GRASS_GREEN = 7,
V4L2_COLORFX_SKIN_WHITEN = 8,
V4L2_COLORFX_VIVID = 9,
};
您如何检查是否定义了V4L2_COLORFX_NEGATIVE
? #ifndef V4L2_COLORFX_NEGATIVE
可以吗?
答案 0 :(得分:2)
您必须在更广泛的上下文中查看编译器宏(例如linux的版本,我不知道可用的内容)或编译时的其他一些信息。 ifndef
用于检查是否定义了编译器宏,而不是代码中的符号。
答案 1 :(得分:1)
检查/usr/include/linux/version.h中的linux版本(你需要安装内核头文件)
它包含类似的内容:
#define LINUX_VERSION_CODE 132640
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
所以你可以使用它:
#if LINUX_VERSION_CODE >= KERNEL_VERSION( 2, 6, 38 )