文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>GCC 应用(一): 找出被.c 文件直接包含多次的头文件

GCC 应用(一): 找出被.c 文件直接包含多次的头文件

时间:2010-11-22  来源:lantianyu520

如果这样的头文件有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命令中.
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载