2011-07-17 58 views
0

需要複製頭文件的內容並粘貼到我的一些類上。原因是 - 使用include指令不會引用可用於外部編譯器的文件,因此它看起來像我唯一的選擇是將頭文件的內容複製到我的類中。使用內聯來插入標頭內容

我想知道是否可以使用特定的*內嵌指令來實現此目的。

什麼是創建我自己的預處理器的行爲的最佳方法?!

+0

你在說什麼外部編譯器? –

+0

@John Zwinck這是一個ODB編譯器 – Bitmap

+0

這個C++ ORM的東西? http://www.codesynthesis.com/products/odb/doc/odb.xhtml ...如果你使用'-I'選項來告訴它在哪裏可以找到你的包含文件,那什麼不起作用? –

回答

1

外部編譯器不擴大編制時includefile的最可能的原因是設置一個失敗的包含搜索路徑 - 但解決的具體問題,你可以得到的gcc編譯器使用展開所有的包含文件-E選項。

所以,

gcc -E mycfile.c >myexpeandedcfile.c 

應該工作假設我正確理解你的問題。

+0

我必須確認這與ODB無關,因爲它擴展了包含文件。一般來說,你的答案是我的預期。謝謝。 – Bitmap

1

您需要創建自己的預處理器工具來執行相當於#include的操作。

+0

如果真正的任務是完全解決所有#包括,而不僅僅是選擇的,則可以使用實際的C預處理器。不過,我懷疑它可能就像你說的那樣。 –

3

如何使用m4宏語言?見,例如,

m4是一種通用的宏處理語言。它在GNU Autotools中特別使用。你可能可以定義一些m4宏來得到你想要的,然後在編譯之前通過m4運行它來預處理你的代碼。

1

這取決於你用什麼編譯器來編譯你的二進制文件。一些編譯器提供可以影響程序內聯的優化標誌。在gcc和g ++中,優化標誌-finline函數將強制內聯它認爲「簡單」的函數。編譯器使用一組啓發式來確定一個函數的簡單性,所以這可能會也可能不會工作,具體取決於您的代碼。 -finline-function標誌也由優化級別3設置,在gcc和g ++中使用-O3標誌啓用。

通過稍微調整並向代碼添加內聯指令,您應該能夠設置一些編譯器標誌來實現完全內聯。