Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5202633
  • 博文数量: 553
  • 博客积分: 13864
  • 博客等级: 上将
  • 技术积分: 11041
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-28 21:25
个人简介

个人Blog: hhktony.com

文章分类

全部博文(553)

文章存档

2015年(1)

2014年(2)

2013年(12)

2012年(384)

2011年(154)

分类: LINUX

2012-02-15 00:07:44

一: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            //代码检查工具

阅读(1606) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~