cpp

cpp

除特殊规定外,或以=结束的选项,该选项的参数可以直接出现在选项后或者两者之间以空格隔开,例如:-Ifoo与-I foo相同。

       由于有的选项有多个字母组成,故多个单个字母选项不能直接接在一起。

-D  name:预定义name为一个宏,且宏定义为1。

-D name=definition:同上,但是当我们定义宏函数时,需要写成如下形式:

                  -D ‘name(args…)=definition’。

-U name:取消宏定义(包括内建或以-D option形式建立的宏)。

-undef:取消system-specific或Gcc-specific预定义的宏,但是我们自己定义的宏仍有效。

-I dir:将dir加入搜索头文件的目录中。而-I- 一个一个的列出搜索头文件的目录,若-I在前,则-I只搜索#include”file”,若-I在后则搜索全部。

-nostdic:不搜索系统头文件目录。

-Wall:开启所有警告(包含-Wcomment、-Wtrigraphs、-Wmultichar以及由于整型提升导致#if表达式值发生变化时的警告信息)。

-Wcomment:当/*出现在/*……*/中或者//出现在/*……*/。

-Wtrigraphs:三字符序列(查阅C专家编程);若要使得trigraph conversion无警告,但是其它警告仍有效,请使用—trigraphs  -Wall  -Wno-trigraphs

-Wtraditional:不符合ISO C则发出警告

-Wundef:若#if后的directive没有定义则发出警告,且认为directive为0

-Wunused-macros:当定义的宏未使用时则发出警告。所谓使用是指:宏被用于宏展开或用于测试。内建宏、命令行上定义的宏及在文件中定义的宏不会不用也不会发出警告。若宏确实被使用了,但是宏却被在跳过的条件块中被使用,则cpp也会被报告其未被使用。

-Wendif-labels:在#endif后还有文本字符则发出警告,因此最好没有。

-Werror:将所有的warning当成错误看待,在严格要求的情形下可这样使用。

-Wsystem-headers:默认为关闭,当我们设计系统库时最好开启。

-w:关闭所有的warning。

-pedantic:执行c标准中的所有强制性检查。

-pedantic-errors:将所有被强制性检查出有问题的都以错误形式列出。

-M:产生一个规则来描述源文件所对应目标文件的依赖文件,但是并没有生成将依赖文件执行变为目标文件的命令(执行过程中默认使用了-w –E)。

-MM:可能会将系统头文件(<>)或包含头文件(””)不加入依赖文件列表中,而只将命令行中的加入。

-MF:指定生成依赖关系的文件名。

-MG:假定丢失的头文件是自动生成的头文件,将它们加入依赖文件中而不会产生错误,该文件直接取自#include指示符中的文件名而没有任何其它路径。

-MP:不仅目标文件有相应的依赖文件,而且依赖文件列表中的文件也称为目标文件。当我们删除头文件而没有更新makefile文件时这会提示我们哪里出错了。

-MT target:例如:

         -MT ‘$(objpfx)foo.o’得到:

         $(objpfx)foo.o:foo.c

-MQ target:例如:

         -MQ ‘$(objpfx)foo.o’得到:

         $$(objpfx)foo.o:foo.c

-MD file:相当于-M –MF file(此过程中若为明显指定则不包含-E)

       若后加-o XXXX形成file的目标依赖文件名为:XXXX.d

       若没有加-o XXXX,则形成目标依赖文件名为:file.d

       若加入-E:

            有-o:指定依赖文件列表中可以含有什么

-xc、-xc++、-x objective-c、-x assembler-with-cpp指定目标语言,若未指定,则识别.c、.cc、.m、.s等等,当不能识别时则当成C文件。

-dM:touch foo.h;cpp –dM foo.h可以看到内建以及系统宏。

 

 

cpp 与 make依赖关系的生成:

一、

      1 #cpp -M test.c -MF makfile0                                                                                 
      2 test.o: test.c show.h /usr/include/stdio.h /usr/include/features.h \
      3  /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \
      4  /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
      5  /usr/include/gnu/stubs-64.h \
      6  /usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h \
      7  /usr/include/bits/types.h /usr/include/bits/typesizes.h \
      8  /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
      9  /usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stdarg.h \
     10  /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h

二、

      1 #cpp -MM test.c -MF makefile1                                                                               
      2 test.o: test.c show.h

三、

      1 #cpp -M -MP test.c -MF makefile2                                                                            
      2 test.o: test.c show.h /usr/include/stdio.h /usr/include/features.h \
      3  /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \
      4  /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
      5  /usr/include/gnu/stubs-64.h \
      6  /usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h \
      7  /usr/include/bits/types.h /usr/include/bits/typesizes.h \
      8  /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
      9  /usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stdarg.h \
     10  /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
     11
     12 show.h:
     13
     14 /usr/include/stdio.h:
     15
     16 /usr/include/features.h:
     17
     18 /usr/include/bits/predefs.h:
     19
     20 /usr/include/sys/cdefs.h:
     21
     22 /usr/include/bits/wordsize.h:
     23
     24 /usr/include/gnu/stubs.h:
     25
     26 /usr/include/gnu/stubs-64.h:
     27
     28 /usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h:
     29
     30 /usr/include/bits/types.h:
     31
     32 /usr/include/bits/typesizes.h:
     33
     34 /usr/include/libio.h:
     35
     36 /usr/include/_G_config.h:
     37
     38 /usr/include/wchar.h:
     39
     40 /usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stdarg.h:
     41    

     42 /usr/include/bits/stdio_lim.h:
     43
     44 /usr/include/bits/sys_errlist.h:

四、

      1 #cpp -MM -MP test.c -MF makefile3                                                                           
      2 test.o: test.c show.h
      3
      4 show.h:

 

原文链接: https://www.cnblogs.com/openix/archive/2012/04/04/2431780.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    cpp

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/46101

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午10:32
下一篇 2023年2月8日 下午10:33

相关推荐