我的代码中有多个驱动程序使用某个资源,但只能定义其中一个。 例如,如果我有以下定义: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 驱动程序使用这些 block 之一。 有更优雅的方法吗?
最佳答案
#if defined(USB_HID) + defined(USB_SERIAL) + defined(USB_STORAGE) != 1
#error Define exactly one of USB_HID, USB_SERIAL, USB_STORAGE
#endif
关于macros - 用于测试的 C 宏 : "If more than one defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4301471/