2014-08-29 53 views
0

我正在嘗試編寫一個宏,它向gcc編譯器添加了一個可執行文件的註釋。這不是用於鏈接的目的,我只是想添加文本評論。 gcc中是否存在與此相同的#pragma註釋?gcc當量#pragma評論

回答

7

我不確定「將評論添加到可執行文件」意味着什麼。誰或將要消費什麼,顯示甚至注意到這些評論?儘管如此,如果你只是想確保某些字符串被嵌入到程序的某個地方,那麼只需在文件範圍內將其聲明爲普通(C)字符串即可。

static const char my_comment[] = "This comment should appear in the compiled executable"; 
+0

我想我問錯了問題,但我會接受這個答案,因爲它沒有充分解決我問 – user2559503 2014-08-29 16:39:01

2

如果你不想弄亂.data部分(這哪裏是static const char[]會去)與意見,或者相反,想從.comment部分容易被發現的評論,你可以添加評論有與內聯彙編的一點點:

__asm__(".section .comment\n\t" 
     ".string \"Hello World\"\n\t" 
     ".section .text"); 

的gcc也has#ident指令,它複製文本如果有一個合適的部分。在ELF的情況下,它將是.comment部分。即使該指令不是標準的,該解決方案可能比前者更便攜。

#ident "Hello World" 
+0

如果成功,這將是顯而易見的,有額外的二進制」之後。評論「在目標文件中? – user2559503 2014-08-29 21:01:57

+0

我不太明白你的問題。此代碼將以文本的形式向.comment部分添加字符串「Hello World」。默認情況下,Gcc已經在該部分生成了它自己的版本字符串。 – user2079303 2014-08-29 21:12:55

+0

在AIX 6.0.1世界中,使用'.csect .comment [RO]'而不是'.section .comment'並使用'.csect .text [PR]'而不是'.section .text'作爲編譯器,彙編器和鏈接器比您預期的要舊。 – 2015-12-09 19:35:07