免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

(轉(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作用類似)。
        --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 $@

下面是我寫的一個(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)買等信息,謹(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)論公約

    類似文章 更多