重新认识C的续行符

 

编程工作中经常用到宏,自然也少不了使用续行符(continuation character),也知道续行符后面不能有其它的字符,包括空白字符。一直以来谨守此规则,未曾遇到什么麻烦,顶多是漏一个两个续行符,一下子就可以查到问题并补上了事。但是今天编写一段代码:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#define JS_DUMP_SCRIPT(s) /
do { /
    U8 *p = NULL; /
    U8 *pUnicode = s; /
    /
    U32 len = 0; /
    /
    while (*pUnicode + *(pUnicode+1) != 0) /
    { /
        pUnicode += 2; /
        len++; /
    } /
        /
    p = MSF_MEM_ALLOC(0, len + 1); /
    memset(p, 0, len + 1); /
        /
    while (*pUnicode + *(pUnicode+1) != 0) /
    { /
        pUnicode += 2; /
        *p = *pUnicode; /
    } /
    /
    printf("[JSE]JS source code=%s/r/n", p); /
    /
    MSF_MEM_FREE(0, p); /
} while (0)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

一编译就报告错误:error C2143: syntax error : missing ')' before 'constant'.................

 

仔细看代码,怎么也发现不了问题!于是还是用上屡试不爽的土办法,把代码备份一下,然后分段去除——编译——再去除。终于发现问题就在这行上:

    printf("[JSE]JS source code=%s/r/n", p); /

再端详一番,感觉没啥问题啊?郁闷中。。。。。。。。。。终于发现了“/”之后竟然有一个空格!去掉之,编译——通过。

 

问题解决了,但是我再度陷入郁闷之中,也陷入了思考。以前只知道续行符之后不能再有字符,但是还真是没有认真想过why?经过一番思考和资料查找阅读,终于在MSDN上找到了答案:

 

[待续..................]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值