2013-10-22 74 views
10

結尾我正在通過一些專有源代碼來查看:使用庫的示例程序。爲什麼C文件以/ * [] */

該代碼是用C和C++編寫的,使用make for build system。

每個文件都以註釋結束[]/*[]*/源文件和#[]# for makefiles。這可能是什麼原因?

該代碼是使用擴展名爲ARM和GCC編譯的。

+0

這可能是'vi'。 – Rohan

+3

我不會說這是一種編碼風格,我猜測它不是標準C.以'#'開始的行往往是預處理指令,'[]#'不是標準的。你確定'#[]#'真的是每個文件的最後一行嗎? –

+1

我的猜測是makefile系統在某處使用這些行。如果代碼具有足夠老的C代碼,則它不一定依賴//註釋,因此#將是添加單行非代碼的一種方式,預編譯器會將其過濾掉。也許這是爲了構建一個依賴樹,或者什麼?我的預感是通過makefile查看。 –

回答

6

這很可能是某種自動擴展的佔位符。

通常像macrodef(或其中一個源代碼控制過濾器)會擴展這些項目以包含一些相關的文本。由於通常只有註釋受保護的括號纔會展開,因此註釋將保持原樣,從而在編譯時保護源代碼免受實際擴展項目的影響。

但是,您目前正在查看的可能是包含所有內部擴展的外部括號。這可能在從一個源代碼控制系統到另一個源代碼控制系統的代碼遷移過程中完成。雖然這樣的想法具有很強的推測性,但似乎並沒有花費努力來遷移擴展項目,而不是將其移除。

0

在一個項目中,我的工作,每一個C源文件包含在最後一個評論:

/* End of file */ 

其原因是海灣合作委員會警告

Warning : No new line at end of file 

所以我們有這個評論(後面有一個新行),以確保人們不會在評論後寫:) :)

+2

這沒有任何意義!只要編輯允許,人們仍然可以在評論結尾刪除新行。 – rodrigo

+0

這是一個好主意,我也想過提及它;但是,它沒有解釋爲什麼make文件具有相同的評論風格。 Make文件不會被編譯,所以他們不會得到'gcc'來發出編譯器警告。 –

+0

@rodrigo當然,但他們看到了評論,而且不會在'文件結束'後面寫'。它確實有效。 – Archie

相關問題