乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      (轉(zhuǎn))Makefile中用宏定義進(jìn)行條件編譯(gcc

       WUCANADA 2012-04-10

      Makefile中用宏定義進(jìn)行條件編譯(gcc -D)/在Makefile中進(jìn)行宏定義-D

      114人閱讀 評(píng)論(0) 收藏 舉報(bào)
       
       

      在源代碼里面如果這樣是定義的:
      #ifdef   MACRONAME
      //可選代碼
      #endif

      那在makefile里面
      gcc   -D   MACRONAME=MACRODEF
      或者
      gcc   -D   MACRONAME 

      gcc -o xx xx.c -D macro
      這樣就定義了預(yù)處理宏,編譯的時(shí)候可選代碼就會(huì)被編譯進(jìn)去了。

      對(duì)于GCC編譯器,有如下選項(xiàng):
              -D macro=string,等價(jià)于在頭文件中定義:#define   macro   string。例如:-D TRUE=true,等價(jià)于:#define   TRUE   true
              -D macro,等價(jià)于在頭文件中定義:#define   macro   1,實(shí)際上也達(dá)到了定義:#define   macro的目的。例如:-D LINUX,等價(jià)于:#define   LINUX   1(與#define   LINUX作用類(lèi)似)。
              --define-macro   macro=string與-D macro=string作用相同。

      如:

      TEST.C 文件

      #include <stdio.h>
      #include <stdlib.h>

      main()
      {
      #ifdef p1
        printf("Hello p1");
      #else
        printf("Hello p2");
      #endif
       
      }

      1.

      編譯: gcc -o test test.c

      運(yùn)行: ./test

      輸出: Hello p2

      2.

      編譯: gcc -o test test.c -D p1

      運(yùn)行: ./test

      輸出: Hello p1

       

      關(guān)鍵詞: Make宏定義 Make傳遞宏定義 Makefile中添加宏定義 Makefile -D

      在Makefile中我們可以通過(guò)宏定義來(lái)控制源程序的編譯。只要在Makefile中的CFLAGS中通過(guò)選項(xiàng)-D來(lái)指定你于定義的宏即可。

      如:
      CFLAGS += -D _YUQIANG
      在編譯的時(shí)候加上此選項(xiàng)就可以了: $(CC) $(CFLAGS) $^ -o $@

      下面是我寫(xiě)的一個(gè)測(cè)試文件:

       

      例如:

      Makefile文件內(nèi)容為:

      CC = gcc
      RM = rm

      CFLAGS += -D _YUQIANG

      TARGETS := myapp

      all:$(TARGETS)

      $(TARGETS):main.c
      $(CC) $(CFLAGS) $^ -o $@

      clean:
      -$(RM) -f *.o
      -$(RM) -f $(TARGETS)


      main.c文件的內(nèi)容為:
      #include <stdio.h>

      int main()
      {

      #ifdef _YUQIANG
      printf("Hello Yu Qiang, How are you?/n");
      #else
      printf("Sorry to lost you. /n");
      #endif

      return 0;
      }


      在端口中輸入    make clean all
      然后輸入           ./myapp

      結(jié)果                 
      Hello Yu Qiang, How are you?

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多