E引數在gcc上的好處

2021-05-26 02:50:52 字數 839 閱讀 5314

gcc的引數有很多,這裡說乙個很重要的引數-e。

如果我們只是想把原始檔預處理一下,-e就派上用場了。

它能幹什麼?

(1)把使用者定義的所有的預定義#define展開。

舉個例子,如果使用者有以下**:

#define max(a, b) ((a)>(b)?(a):(b))

int c = max(a, b);

經過gcc預處理後,預定義都將展開成如下樣子:

int c = ((a)>(b)?(a):(b));

(2)把所有的#include的檔案內容載入進來。

假如我們有#include ,預處理後程式會用stdio.h的內容替換掉#include ,

最後的程式中,你將找不到<>這樣的include,更多的是#include "/usr/include/stdio.h"之類的。

有了這個,你可以知道a)stdio.h在linux下的存放路徑,b)file結構體的摸樣,c)size_t型別的定義,d)其他很多你想知道的

(3)處理條件編譯,將不符合條件的**段刪除。

例如,有**段:

#ifdef m

printf("m");

#else

printf("nm");

#endif

預處理後程式將變成

printf("m");

(因為沒有#define m,其他行位置為空,**printf("nm")將被刪除)

怎麼使用?

使用很簡單:gcc -e a.c即可

如果想儲存結果,就重定向到某個檔案吧,如:gcc -e a.c>b.c(之後可對b.c編譯:gcc -o b b.c,執行效果同a.c)

在 Windows 上安裝 GCC

寫在原始檔中的源 是人類可讀的源。它需要 編譯 轉為機器語言,這樣 cpu 可以按給定指令執行程式。c 語言編譯器用於把源 編譯成最終的可執行程式。這裡假設您已經對程式語言編譯器有基本的了解了。一 安裝 mingw minimalist gnu for windows 是乙個適用於微軟windows...

在Linux上安裝redis 含gcc

安裝gcc c yum install gcc c wget 2.解壓 tar xzvf redis 3.0.4.tar.gz 3.編譯安裝 切換至程式目錄,並執行make命令編譯 cd redis 3.0.4 make 執行安裝命令 make prefix usr local redis inst...

在AIX 5L上尷尬的GCC

何謂尷尬呢?aix 5l 上本身有編譯器 visual age c c 但是不知怎麼的,老連裝上的 visual age 有問題,什麼問題呢?就是不能編譯程式,老是提示你編譯錯誤。為此我跟嚴明作了乙個試驗,編譯一段 用普通使用者 oracle 不能編譯過去,但是用 oracle 切換成root 使用...