代码之家  ›  专栏  ›  技术社区  ›  Petr Skocik

用gcc抑制-Wunused值

gcc c
  •  2
  • Petr Skocik  · 技术社区  · 6 年前

    #define STC_ASSERT(X,Msg) \
         (!!sizeof(struct{char STC_ASSERT;_Static_assert((X),Msg "");}))
    #define A 43
    #define B 42
    #define C (STC_ASSERT(A-B>=0,"")?(A-B):0)
    enum { c = C };
    int main()
    {
        STC_ASSERT(1,""); //can this not generate a warning on gcc?
    }
    

    里面 这个 STC_ASSERT _Static_assert 防止线路进入的包装 main -Wunused-value 编译时出现警告 gcc -Wall -Wextra

    ( _Pragma 具有 GCC diagnostic push/pop 在这里行不通。对于类似宏的 #define FOO 42 ({ 42; }) )可以做到这一点,但这会阻止宏在需要整数常量表达式的上下文中使用(例如 enum

    0 回复  |  直到 6 年前