系统编程:C语言与Linux的深度探索
1. GCC扩展与C语言特性
在C语言编程中,GCC提供了一些有用的扩展功能。例如,在 switch 语句中可以使用区间表示,示例代码如下:
switch (val) {
case 1 ... 10:
/* ... */
break;
case 11 ... 20:
/* ... */
break;
default:
/* ... */
}
这种区间表示在处理ASCII字符范围时也非常有用,如 case 'A' ... 'Z': 。需要注意的是,省略号前后要有空格,否则编译器可能会产生混淆,应该使用 case 4 ... 8: 而不是 case 4...8: 。
另外,在GCC中,允许对 void 类型指针和函数指针进行加减运算。ISO C通常不允许这样做,因为“void”的大小概念不明确,其大小取决于指针实际指向的对象。为了实现这种运算,GCC将引用对象的大小视为一个字节,例如:
a++; /* a is a void pointer */
使用 -Wpointer-arith 选项会使GCC在使用这些扩展时生成警告。
为了让GCC扩展更具可移植性和美观
超级会员免费看
订阅专栏 解锁全文
1923

被折叠的 条评论
为什么被折叠?



