私のコンパイラは、#381-D: extra ";" ignored
このような状況で警告を発します:
次のような構造体が定義されています
struct example_s
{
u8_t foo;
SOME_MACRO(bar);
};
マクロSOME_MACRO(x)
は次のことを行います。
#if defined(SYSTEM_A)
#define SOME_MACRO(x) u16_t x##something
#else
#define SOME_MACRO(x) /* nothing */
#endif
もちろん、 がSYSTEM_A
定義されていない場合、警告は正しいです。単純;
に、構造体の中に a があるからです。しかし、誰かがそれを正しく回避する方法を知っていますか? ;
をマクロに移動して、典型的な C スタイルを壊したくありません。