大多数的C/C++编译器都支持一个“-M”的选项,即自动找寻源文件中包含的头文件。举个例子,比如mian.c包含有如下头文件。

#include <stdio.h>

#include "log.h"

用gcc -M main.c就可以输入其包含的所有头文件。如下图所示。

[root@bogon CodeNotes]# gcc -M main.c

main.o: main.c /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/gnu/stubs-32.h \

/usr/lib/gcc/i386-redhat-Linux/4.1.2/include/stddef.h \

/usr/include/bits/types.h /usr/include/bits/typesizes.h \

/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \

/usr/include/bits/wchar.h /usr/include/gconv.h \

/usr/lib/gcc/i386-redhat-linux/4.1.2/include/stdarg.h \

/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h log.h

可以看出“-M”参数会把一些标准库的头文件也包含进来。如果你使用GNU的C/C++编译器,你可以用“-MM”参数,它会忽略#include<file>造成的依赖关系,不会显示标准库的头文件,如下图所示。

[root@bogon CodeNotes]# gcc -MM main.c

main.o: main.c log.h

GCC选项之-M的更多相关文章

  1. gcc选项-g与-rdynamic的异同

    摘自http://www.tuicool.com/articles/EvIzUn gcc选项-g与-rdynamic的异同 gcc 的 -g ,应该没有人不知道它是一个调试选项,因此在一般需要进行程序 ...

  2. GCC选项

    -g: Debugging Option. 提供给GDB的debugging信息的选项: -fno-omit-frame-pointer: Optimization Option: -Wstrict- ...

  3. gcc选项-g与-rdynamic的异同_转

    转自:http://www.tuicool.com/articles/EvIzUn gcc 的 -g ,应该没有人不知道它是一个调试选项,因此在一般需要进行程序调试的场景下,我们都会加上该选项,并且根 ...

  4. 常用gcc选项

    <Linux GCC常用命令> Makefile有三个非常有用的变量.分别是$@,$^,$<代表的意义分别是: $@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件 ...

  5. GCC选项_-Wl,-soname 及 DT_NEEDED 的解释

    -Wl选项告诉编译器将后面的参数传递给链接器. -soname则指定了动态库的soname(简单共享名,Short for shared object name) soname的关键功能是它提供了兼容 ...

  6. 【转载】 GNU GCC 选项说明

    GCC 1 Section: GNU Tools (1) Updated: 2003/12/05 Sponsor: GCC Casino Winning Content NAME gcc,g++-GN ...

  7. gcc选项 笔记

    gcc –E hello.c –o hello.i   使用gcc的选项"-E" 让gcc在预处理结束后停止编译过程. gcc –S hello.i –o hello.s   &q ...

  8. GCC选项 –I,-l,-L

    -I:指定第一个寻找头文件的目录 -L:指定第一个寻找库文件的目录 -l:表示在库文件目录中寻找指定的动态库文件 例: gcc –o hello hello.c –I /home/hello/incl ...

  9. Linux下动态链接库 与gcc 选项

    -L 编译时查找动态链接库的路径 -lxxx(小写)  e.g -lcudart   = link libcudart.so  , -I(大写) 头文件的路径 -rpath (-R), 编译时指定链接 ...

随机推荐

  1. hdoj1004(查找众多字符串中个数最多的字符串)

    Let the Balloon Rise. 最近开始刷hdoj,想通过写博客做做笔记,记录写过代码. Problem Description Contest time again! How excit ...

  2. [剑指Offer]45-把数组排成最小的数

    题目链接 https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993?tpId=13&tqId=11185&t ...

  3. 【疑】checkpoint防火墙双链路切换导致丢包问题

    拓扑: 外线联通.电信各200M,通过边界交换机(纯二层,用于分线),分别接到主.备防火墙. 具体配置如下: 故障现象: 由于电信光缆中断导致电信链路不可用.大量员工反映频繁出现断网现象,通过公网注册 ...

  4. WebApi中Swagger的使用(超级简单)

    Swagger解释 Swagger是一种Rest API的简单但强大的表示方式,她是标准的与语言无关,这种表示方式不但人可读,而且机器可读. 可以作为Rest API的交互式文档,也可以作为Rest ...

  5. Couchbase学习和使用

    Couchbase介绍 couchbase的关键有两点:延后写入和松散存储.延后写入,顾名思义,couchbase在对数据进行增删时会先体现在内存中,而不会立刻体现在硬盘上,从内存的修改到硬盘的修改这 ...

  6. go语言net包rpc远程调用的使用

    一.基于http的RPC 服务端: package main; import ( "net/rpc" "net/http" "log" ) ...

  7. 【gRPC使用问题2】按照问题1操作生成出来的代码,import的proto内定义的message未生成出来

    1.问题 其实元数据proto里是有定义message,但是 这个message的定义是在另一个 proto文件内,被 api.proto导入,事实上 我是对 api.proto 进行命令行生成代码的 ...

  8. Await Async和Thread.waitAll想法?未完待续

    [管理员]四九-李冰-修行者(2216529884) 2017/7/3 17:15:12 看着就可以了,这种东西是有使用场景的.并不是你用了就一定有提升的 [管理员]上海-xx科技(lovepoint ...

  9. input 原生上传文件(type = file)

    1.表单上传文件的步骤: - 1)设置enctype 默认为:enctype="application/x-www-form-urlencoded"(一般不设置) 若要表单中有需要 ...

  10. python学习笔记Day2

    字符编码 编程规范(PEP8) 变量1.常量(用大写) 2.变量 常用类型:str .int.float. long.bool 字串格式化: %d 整数 %2d占两位 %02d占两位用0填充 %f 浮 ...