2017-07-18 105 views
-8

該聲明是在一個文件中:什麼將被這個陳述取代?

#include "filename" 

當將這個文件由它的內容所取代?

  1. 編譯之前

  2. 後彙編

  3. 在執行過程中

+9

heh?你有沒有跳過你書中的預處理章節? –

+1

問題的標題與問題本身不符。 – Codor

+1

閱讀此:https://stackoverflow.com/questions/16253977/how-does-c-preprocessor-work –

回答

1

預處理編譯的其他階段之前進行的,但大多數現代編譯器包括預處理階段的一部分的編譯過程。

的問題是近似:

  • 如果你只有3種選擇,預期的答案很可能是1

  • 如果你可以選擇沒有以上的,你有麻煩了因爲你不能確定問題是愚蠢的還是微不足道的。

  • 如果這是一個面試問題,這裏有機會告訴面試官你所知道的關於編譯過程,解析階段等的時間限制。

+0

.. unless NOTA是一個隱藏的選項;) – CinCout

+1

@CinCout:確實這可能是一個詭計的問題。 – chqrlie

+0

@chqrlie「如果這是一個面試問題,這裏是你有機會告訴面試官你所有......思考他。」:) –

1

如果嚴格按照C標準這說明(不使用單詞「彙編」)(5.1.1翻譯環境,5.1.1.1程序結構)

1交流計劃不需要全部同時翻譯。該程序的文本保存在本標準中稱爲源文件的單元(或預處理文件 )中。 源文件連同 所有通過預處理 指令#include包含的頭文件和源文件被稱爲預處理轉換單元。預處理後,預處理翻譯單元稱爲 翻譯單元以前翻譯的單位可能是 單獨保存或在圖書館。程序的單獨翻譯單元 通過(例如)調用與其標識符具有外部鏈接的功能,對其標識符具有外部鏈接的對象的操縱或對數據文件的操縱進行通信。 翻譯單元可以單獨翻譯然後再鏈接到 產生一個可執行程序。

因此,在預處理期間但在翻譯之前,所有#includes都替換源文件。