VC编程有关问题解析:关于将汇编代码段定义成宏的有关问题

VC编程问题解析:关于将汇编代码段定义成宏的问题
原问题:
有一个需要多处使用的汇编代码段,我把它定义成宏,其中有标号,例如:  
#define   MACRO1()   _asm   {                         \  
                                          nop;                     \  
                                          nop;                     \  
                                          jmp   label100;   \  
                                          nop;                     \  
                                          nop;                     \  
                                          label100:           \  
                                  }  
调用时出错:Multiple   declaration   for   'label100 '  


答案:
#define   MACRO1__(NO)                                   \
                                  __asm   nop                       \
                                  __asm   nop                       \
                                  __asm   jmp   label##NO   \
                                  __asm   nop                       \
                                  __asm   nop                       \
                                  __asm   {}   label##NO:
#define   MACRO1_(NO)   MACRO1__(NO)           //   感谢   hpho   和   littlesweetmelon
#define   MACRO1   MACRO1_(__LINE__)

int   main()
{
        MACRO1;
        MACRO1;
}

说明:
1。汇编中分号是注释,使用分号没法写到同一行,所以改   _asm{}   为数个   _asm,并去掉分号
2。标签前加个   __asm{}   是中断前一个__asm的词法解析
3。看似无用的#define   MACRO1_(NO)   MACRO1__(NO)交给   hpho   和   littlesweetmelon   两个大神去解释。