Linux下的C编程特点
来源:互联网 发布:java开发网站 编辑:程序博客网 时间:2024/04/30 07:16
Linux下代码括号“{”和“}”的使用原则如下
(1)对于结构体、if/for/while/switch语句,“{”不另起一行,例如:
struct var_data{int len;char data[0];};if (a == b){a = c;d = a;}for (i = 0; i < 10; i++){a = c;d = a;}
(2)如果if、for循环只有1行,不要加“{”和“}”。
(3)if和else混用的情况下,else语句不另起一行,例如:
if (a == y){...}else{...}
(4)对于函数,”{“另起一行,在switch和case语句方面,Linux建议switch和case对齐,例如:
switch{case 'G':case 'g':mem <<= 30;break;case 'M':case 'm':mem <<= 20;break;case 'K':case 'k':mem <<= 10;break;default:break;}GNU C的扩展
1 零长度和变量长度数组
truct var_data {int len;char data[0];}
也可以用一个变量定义数组,例如:
int main (int argc, char *argv[]){int i, n = argc;double x[n];for (i = 0; i < n; i++)x[i] = i;return 0;}
2 case 范围支持,例如:
switch (ch) {case '0'... '9': c -= '0';break;case 'a'... 'f': c -= 'a' - 10;break;case 'A'... 'F': c -= 'A' - 10;break;}
3 语句表达式
GNU C把括号中的复合语句看做是一个表达式,称为语句表达式。
#define min_t(type, x, y) \({type __x = (x); type __y = (y); __x < __y ? __x: __y})
4 typeof 关键字
typeof(x)可以获得x的类型,因此上面的定义可以变成:
#define min(x, y) ({ \const typeof(x) _x = (x);\const typeof(y) _y = (y);\_x < _y ? x: y;})
5 可变参数宏
#define pr_debug(fmt, arg...) \printf(fmt, ##arg)
6 在宏定义中使用do{}while(0)
#define SAFE_FREE(p) do{free(p); p = NULL;}while(0)if (NULL != p)SAFE_FREE(p);else...
1)上面的代码如果不用do{}while(0)包含起来,展开过后if后面就会出现两条语句,导致else分支没有对应的if,编译失败。
2)假设没有后面的else分支,则不论if的条件是否成立,p = NULL;都会执行。
2 0
- Linux下的C编程特点
- Linux下C编程特点
- 《Linux4.0设备驱动开发详解》笔记--第三章:Linux下的C编程特点
- Linux内核编程的特点
- Linux下的C编程
- linux下的C编程
- linux下的c编程
- Linux下的C编程
- Linux下的C编程--文件系统编程
- Linux c==网络编程的理论知识-vpn的作用和特点(28)
- Linux下C编程
- linux下c编程
- Linux下c编程
- linux下C编程
- linux下c编程
- Linux下C编程
- linux下的c 编程------curses 库
- linux下的c 编程------time
- 模拟Linux命令行方式在Windows下编译C/C++程序(使用VS编译器)
- Android ListView中item条目点击被item上的button点击事件抢夺的解决方案
- 数字求和
- 方面卖了出门看看了的反弹尔的快捷键
- ios 8 开发者手册
- Linux下的C编程特点
- MySQL高级技术-存储引擎
- Union-find(Algorithms, Part 1, week 1 )
- Flex AIR应用的启动闪屏(必须)
- ip地址分类
- Core Data 的用法
- ubuntu下载软件安装包
- bzoj 1266: [AHOI2006]上学路线route
- asp.net中Get与Post请求的区别