c define multiline macro?

前端 未结 6 1524
滥情空心
滥情空心 2021-02-05 18:32
#define DEBUG_BREAK(a)\\
    if ((a)) \\
{\\
    __asm int 3;\\
}

I have defined a macro as above, and try to use it

#include \"test_d         


        
6条回答
  •  没有蜡笔的小新
    2021-02-05 19:12

    The macro

    #define DEBUG_BREAK(a)\
        if ((a)) \
        __asm int 3;
    

    works fine but

    #define DEBUG_BREAK(a)\
        if ((a)) \
    {\
        __asm int 3;\
    }
    

    doesn't! And I think anyone could guess why!! The new line operator is the problem making guy!

    It takes

     __asm int 3;\
    }
    

    as

    __asm int 3; }
    

    where ; comments out what follows it (in assembly). So we will miss a } then.

提交回复
热议问题