• 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:

  • 相关阅读:
    18.11.5 考试总结
    18.11.2 考试总结
    18.11.1 考试总结
    洛谷 P1084 疫情控制 noip2013D2T3
    18.10.31 考试总结
    洛谷P1312 Mayan游戏 noip2011D1T3
    18.10.30 考试总结
    【考前复习_各类模板之补充】
    NOIP2016之反面教材提供
    【最后的抒情】【离NOIP还有9个小时】
  • 原文地址:https://www.cnblogs.com/openix/p/2431780.html
Copyright © 2020-2023  润新知