Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1526074
  • 博文数量: 290
  • 博客积分: 3468
  • 博客等级: 中校
  • 技术积分: 3461
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-28 22:21
文章分类

全部博文(290)

文章存档

2016年(13)

2015年(3)

2014年(42)

2013年(67)

2012年(90)

2011年(75)

分类:

2012-03-15 10:33:38

原文地址:有用的C语言工具 作者:

一:cdecl 的一个非常强大的功能就是能够分析C语法中非常复杂的定义。

1:用cdecl来学学const C语言的功能。

运行cdecl
(1)const char * i;
cdecl> explain const char * i
declare i as pointer to const char
翻译: 定义i为指针,指向const类型的char

(2) char *const  i;
cdecl> explain  char *const  i
declare i as const pointer to char
翻译: 定义iconst型的指针,指向char

(3)
那么有没有char const *i; 这样的用法呢?那我们就试试吧,
cdecl> explain  char const * i
syntax error
是否真的是语法错呢?那就得看看《The C Programming Language》了, A.8.6.1 Pointer Declarator 只有上面两种用法。于是用gcc试试,发现可以编译过去,和const char *i是一样,不知道是不是cdecl太严谨了呢,不过const *这种表示的确不好看。那const * char i; 呢?不过这就不用试了吧,*char 是个什么东西呀。

2: cdecl 学学函数指针。
(1) char (*a)()

cdecl> explain char (*a)()
declare a as pointer to function returning char
翻译: 定义a是一个函数指针,指向的函数返回char型。

(2) char (*a[])()   是什么?
cdecl> explain char (*a[])()
declare a as array of pointer to function returning char
翻译: a 是一个函数指针数组,数组成员指向的函数都是返回char型。

(3)char ((*a[])())() 又是什么???????
cdecl> explain char ((*a[])())()
declare a as array of pointer to functiHon returning function returning char
翻译: a是一个指针数组,数组成员指向返回 "函数" 指针的函数,(双引号中的函数的返回值是char)
 
(4) char *((*a[])())()
和上面的区别就不大了
cdecl> explain char *((*a[])())()
declare a as array of pointer to function returning function returning pointer to char
翻译: a是一个指针数组,数组成员指向返回 "函数" 指针的函数,(双引号中的函数的返回值是char型的指针)

二、cflow

clow   hello.c            //显示函数的调用关系

三、splint            //代码检查工具

阅读(1148) | 评论(0) | 转发(0) |
0

上一篇:git使用说明

下一篇:移植boa到loongson 1b

给主人留下些什么吧!~~