Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2349693
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: LINUX

2010-06-09 01:10:11

如果这样的头文件有include guard, 包含多次也不会有多大坏处, 只不过让源代码看上去杂乱随意, 不是好事.

假设在一个已有的项目中工作, 要整治此类现象, 可以通过
gcc -H 选项来让gcc在编译时额外地输出它包含的头文件, 如下:

zhao@ubutnu-zrf:~/c$ gcc -H -o test test.c
. foo.h
. /usr/include/stdio.h
.. /usr/include/features.h
... /usr/include/sys/cdefs.h
.... /usr/include/bits/wordsize.h
... /usr/include/gnu/stubs.h
.... /usr/include/bits/wordsize.h
.... /usr/include/gnu/stubs-32.h
.. /usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h
.. /usr/include/bits/types.h
... /usr/include/bits/wordsize.h
... /usr/include/bits/typesizes.h
.. /usr/include/libio.h
... /usr/include/_G_config.h
.... /usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h
.... /usr/include/wchar.h
... /usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h
.. /usr/include/bits/stdio_lim.h
.. /usr/include/bits/sys_errlist.h
. foo.h
Multiple include guards may be useful for:
/usr/include/bits/stdio_lim.h

接下来的事, 需要:
对每个被编译的.c 文件, 通过行首.的个数, 找出所有被直接包含的头文件, 再对这此排序, 找出连续重复的行, 就是被重复包含的文件.

如果项目是通过make 一个命令完成所有任务, 可以通过对cc或gcc偷梁换柱的技法来加上一个-H 选项, 这样可以保证所有的Makefile都不需要修改. 什么是偷梁换柱? 请看GCC 应用(二)

或者, 如果你的make 过程对环境变量CFLAGS是敏感的, 可以把-H加到CFLAGS变量中, 目的只有一个, 就是让-H出现在每一个实际运行的gcc命令中.
阅读(1139) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~