C preprocessor: expand macro in a #warning

前端 未结 4 1675
礼貌的吻别
礼貌的吻别 2020-12-12 20:39

I would like to print a macro value (expand the macro) in the #warning directive.

For example, for the code:

#define AAA 17
#warning AAA = ???
         


        
4条回答
  •  误落风尘
    2020-12-12 21:12

    You can use the preprocessor directive #pragma message.

    Example:

    #define STR_HELPER(x) #x
    #define STR(x) STR_HELPER(x)
    
    #define AAA 123
    #pragma message "content of AAA: " STR(AAA)
    
    int main() { return 0; }
    

    The output may look like this:

    $ gcc test.c
    test.c:5:9: note: #pragma message: content of AAA: 123
     #pragma message("content of AAA: " STR(AAA))
             ^
    

    For reference:

    • https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html
    • https://msdn.microsoft.com/en-us/library/x7dkzch2.aspx
    • https://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-via-pragmas

提交回复
热议问题