自分のコードにリソースを使用するドライバがいくつかありますが、そのうちの1つしか定義できません。 たとえば、次の定義がある場合:USB_HID、USB_SERIAL、USB_STORAGE。 と私は1つだけが定義されていることをテストしたい、これを行う簡単な方法はありますか? 現在、私はそれをこのようにやっている:各USB_XXXドライバのためのこれらのブロックの1と テストするCマクロ:「複数定義されている場合」
#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
を...。 これを行うよりエレガントな方法はありますか?
#elifのではないのはなぜ#if defined (USB_HID) && defined (USB_INUSE)
ニースの解決策。私はおそらく&& ||の厄介なマッシュアップに終わったでしょう。演算子。 –
本当にいいです、+1。 @Mike Weller:私もそうです:) –
伝説の答えは、私がこれを見た前に私はオペレーターがすごかったです。 – sweetlilmre