2017-02-20 137 views
1

我在我的終端上運行prova.c文件。
我跑GCC的命令行:gcc的這些行是什麼意思?

gcc -Wall -std=c99 -E prova.c 

prova.c:

int main(int argc, char* argv[]) { 
      int a=1; 
      int b=2; 
      return a+b; 
    } 


標準輸出:

# 1 "prova.c" 
# 1 "<built-in>" 
# 1 "<command-line>" 
# 1 "/usr/include/stdc-predef.h" 1 3 4 
# 1 "<command-line>" 2 
# 1 "prova.c" 
int main(int argc, char* argv[]) { 
    int a=1; 
    int b=2; 
    return a+b; 
} 

什麼每一行與在哈希意味着什麼?
爲什麼我們需要它們來生成?
如果您有時間我想對每一行有一個比一般答案更多的解釋。我知道其中有些是線條標記。
如果您知道共享這些主題的資源將非常棒。

+0

星號是'*'。 – Filburt

+0

謝謝,我編輯了它 –

+0

當你將-E開關傳遞給gcc時,你期望什麼? –

回答

0

這不是一個完整的答案,因爲你願意,但它可以給你一些提示。

給予gcc-E說法有(link)

停止預處理階段之後;不要運行編譯器。輸出採用預處理源代碼的形式發送到標準輸出。

這解釋了你得到的命令# 1。現在,您可以閱讀有關預處理器輸出here的文檔。它說:

'1' 這表示新文件的開始。

我不確定# 1塊內的命令。

+0

謝謝你試圖幫助!無論如何,你不是很好奇,知道他們究竟意味着什麼嗎? –

+0

我是。也許不如你:) – ChronoTrigger

+0

好吧,讓我們希望有人會使我高興! –