GCC选项之-M

摘要:
大多数C/C++编译器都支持“-M”选项,即自动查找源文件中包含的头文件。例如,mian。c包含头文件#Include #include“log.h”使用gcc Mmain。c输入它包含的所有头文件。[ root@bogonCodeNotes]#gcc Mmain.cmain.o:main.c/usr/include/stdio.h/usr/ininclude/features.h/usr/include/sys/cdefs.h/usr/include/bits/wordsize.h/usr/include/gnu/tubs.h/usr/include/gnu/tubs-32.h/usr/lib/gcc/i386-redhat-Liux/4.1.2/include/stddef.h/usr.include/bits/types.h/usr/include/bites/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.hlog。H可以看出,“-M”参数将包括一些标准库头文件。如果使用GNU C/C++编译器,可以使用“-MM”参数,该参数将忽略#include<file>引起的依赖性,并且不会显示标准库的头文件,如下图所示。

大多数的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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇串口通信 DTR DSR RTS CTSdelphi 对应 c# 的一些函数及类型的转换方法【原】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux基础——查看IP及port的简单实现

需要注意,不同的机器,有的可能为大端字节序,有的可能为小端字节序。 小端就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。 大端就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。 实现代码如下: 1 #include <stdio.h> 2 #include <stdlib...

Redis6:第二章:(2)Redis6 下载安装

一、安装版本   1、下载地址   Redis 官方网站:http://redis.io   Redis 中文官方网站:http://redis.cn/               2、安装版本  6.2.1 for Linux(redis-6.2.1.tar.gz)  不用考虑在windows环境下对Redis的支持;    二、安装步骤   1、...

suse 下的gcc安装

在付出了一天的努力之后终于在win7系统上面硬盘安装suse操作系统成功,可是随之而来的问题居然是没有安装GCC,这对我来说是一个不小的打击,因为很多工作和工具安装需要通过GCC来编译,因此我只好求助于百度,搜索了各种攻略,现在把我安装成功的经验分享一下。 因为suse里面本身没有cc的编译工具,所以使用 gcc-4.4.2.tar.bz2这种方式安装的报...

Linux头文件和库文件添加环境变量与GCC编译器添加INCLUDE与LIB环境变量

  对所有用户有效在/etc/profile增加以下内容。只对当前用户有效在Home目录下的 .bashrc或.bash_profile里增加下面的内容: (注意:等号前面不要加空格,否则可能出现 command not found) #在PATH中找到可执行文件程序的路径。 export PATH =$PATH:$HOME/bin #gcc找到头文件的...

MASM32快速起步

MASM32是一个免费的软件程序,让您编辑Microsoft宏汇编程序(MASM)代码从一个基本的文本界面。它强调MASM代码各部分以不同的颜色,使其更容易扫描和检测错误。它提供了一个简单的布局程序员手动编辑代码,没有任何花哨的功能或选项的常规Microsoft宏汇编。注意MASM32编辑器实际上并没有让你运行或编译的代码。对于这一点,你仍然需要Micros...

gpio IOCTL控制

之前工作的时候,linux下用过GPIO的,无非就是配置输出输入模式,set/get value ,或者是gpio中断之类的,用户态配置GPIO主要是两种方式:用户态使用mmap直接将GPIO 地址映射过来,操作地址, 或者 IOCTL发命令给内核,内核来控制,最近半年都在写单片机的代码。时间久了有点忘了,最近使用都是偷懒直接使用了/sys下的设备,通过s...