c语言中case0不用算吗,在案例中为三重点(case’0’…’9′:)有效的C语言切换语法?...

我在

DRBD软件的开源代码文件(

user/drbdtool_common.c)中注意到这一点

const char* shell_escape(const char* s)

{

/* ugly static buffer. so what. */

static char buffer[1024];

char *c = buffer;

if (s == NULL)

return s;

while (*s) {

if (buffer + sizeof(buffer) < c+2)

break;

switch(*s) {

/* set of 'clean' characters */

case '%': case '+': case '-': case '.': case '/':

case '0' ... '9':

case ':': case '=': case '@':

case 'A' ... 'Z':

case '_':

case 'a' ... 'z':

break;

/* escape everything else */

default:

*c++ = '\\';

}

*c++ = *s++;

}

*c = '\0';

return buffer;

}

我从来没有见过这个“三点”的构造(case’0’…’9′:)在C之前.它是一种有效的标准C语言吗?还是那种预处理魔法?这里发生了什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值