我有几个驱动程序在我的代码中使用资源,其中只能定义一个。 例如,如果我有以下定义:USB_HID,USB_SERIAL,USB_STORAGE。 我想测试只有一个被定义,是否有一个简单的方法来做到这一点? 目前我这样做:
#ifdef USB_HID
#ifdef USB_INUSE
#error "Can only have one USB device"
#else
#define USB_INUSE
#endif
#endif
#ifdef USB_SERIAL
#ifdef USB_INUSE
#error "Can only have one USB device"
#else
#define USB_INUSE
#endif
#endif
... 每个USB_XXX驱动程序使用其中一个块。 有更优雅的方式吗?
答案 0 :(得分:11)
#if defined(USB_HID) + defined(USB_SERIAL) + defined(USB_STORAGE) != 1
#error Define exactly one of USB_HID, USB_SERIAL, USB_STORAGE
#endif
答案 1 :(得分:0)
是的,请使用define
运算符,例如:
#if defined (USB_HID) && defined (USB_INUSE)
答案 2 :(得分:0)
为什么不#elif?
#if defined(USB_HID)
#define USB_INUSE
#elif defined(USB_SERIAL)
#define USB_INUSE
#endif