首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

嘢!总算找到在宏定义中用续行符\和/*注释*/能编译通过的方法了

2013-03-01 
嘢!终于找到在宏定义中用续行符\和/*注释*/能编译通过的方法了!再次体现出C语法的自由和灵活!(上次是http:

嘢!终于找到在宏定义中用续行符\和/*注释*/能编译通过的方法了!
再次体现出C语法的自由和灵活!(上次是http://topic.csdn.net/u/20120202/11/446d2bd3-e726-4a6e-9533-92dae10358ca.html)
可惜CSDN带汉字的代码行字符宽度不一致导致对齐不好看。

#include <stdio.h>

#define WIRTE_UINT(des ,x ,pos ,len)  (                                   \
    (des)                                                                 \
    &                                                                     \
       ~(                                /* 除要修改的位为0,其余都为1 */ \
            (                                                             \
                (1<<(len))-1             /* 长度为len位的1             */ \
            )                                                             \
            <<(32-(pos)-(len))           /* 左移32-(pos)-(len)位       */ \
        )                                                                 \
    |                                                                     \
        (                                                                 \


            (x)                                                           \
            <<(32-(pos)-(len))                                            \
        )                                                                 \
)
#define READ_UINT(src ,pos ,len)      (                                   \
    (                                                                     \
        (                                                                 \
            (unsigned)(src)                                               \
        )                                                                 \
        >>(32-(pos)-(len))               /* 逻辑右移32-(pos)-(len)位   */ \
    )                                                                     \
    &                                                                     \


    (                                                                     \
        (1<<(len))-1                     /* 长度为len位的1             */ \
    )                                                                     \
)

int main()                              //                1111111111222222222233
{                                       //bit   01234567890123456789012345678901
    unsigned int des = 0x661;           //      00000000000000000000011001100001
    des = WIRTE_UINT(des ,3 ,28 ,2);    //      00000000000000000000011001101101
    printf("des==0x%08X\n",des);
    unsigned int r = READ_UINT(des ,28 ,2);
    printf("r==%d\n",r);
    return 0;
}
//des==0x0000066D
//r==3


[解决办法]
楼主这你都实验出来了,长见识…
[解决办法]
楼主的意思是说“代码 /*标注*/ \”这种方法【代码 + 标注 + 续行符】吗?

[解决办法]
牛人啊,赵老师V5
[解决办法]
引用:
牛人啊,赵老师V5


这哥们能得高分,哈哈
[解决办法]
这个,系统的宏都是这么注释的...............
[解决办法]
码痴的标志
[解决办法]
赵老师啊!不多说必须顶!87v5
[解决办法]
引用:
牛人啊,赵老师V5

+1
[解决办法]
C语言填表式的比较漂亮
[解决办法]
我就迷信赵老师,顶了再看
------解决方案--------------------


好,支持。,。
[解决办法]
精神可嘉,挺不错的!
[解决办法]

引用:
注释肯定要加在续行符的前面啊,因为续行符必须出在行尾
而预处理时,对续行符的处理阶段(第二阶段)要早于注释的处理阶段(第三阶段),所以文本分析时续行符不在行尾,也就不会起作用了
退一步来讲,即使注释的处理早于续行符,那么注释会被处理为一个空格,这样,续行符仍旧不是处于行尾位置,所以还是会出错

分析的有理。
[解决办法]
引用:
注释肯定要加在续行符的前面啊,因为续行符必须出在行尾
而预处理时,对续行符的处理阶段(第二阶段)要早于注释的处理阶段(第三阶段),所以文本分析时续行符不在行尾,也就不会起作用了
退一步来讲,即使注释的处理早于续行符,那么注释会被处理为一个空格,这样,续行符仍旧不是处于行尾位置,所以还是会出错

分析的有理。 

热点排行