我想知道是否有些C/C++編譯器實現類似於Pawn的股票關鍵字。C/C++中Pawn的「股票」函數同系物
典當,你可以聲明函數那樣:
stock xfunc(a, b)
{
[...] // Bla bla
}
該股關鍵字告訴編譯器根本不包括在編譯的二進制的作用,如果它不叫某處代碼。這使得功能兼容性可以這麼說,並且如果它不被使用,它不會增加二進制大小。
我會發現在C/C++中有這樣的東西是有用的,因爲我想包含一些函數,我不會立即在我的程序/代碼的第一次迭代中使用它。當然,有些人可能會告訴我,還有其他方法可以做到這一點,例如使用預處理宏等。我不想要另一種方式,我希望允許我在稍後使用這些函數,而不必取消註釋它們,改變一個宏使它們被編譯等(即無縫地)。但是...沒有編譯它們,因此增加我的可執行文件大小,當我不使用它們時!
我會說一個方便的功能。 謝謝!
P.S.如果答案是「它不包含在語言標準中」,那麼是否有編譯器使用特定的編譯指示,非官方的關鍵字等進行編譯?
編輯:我應該提到,我最感興趣的是虛擬功能的這個功能。我知道標準函數存在函數級鏈接,但虛擬函數呢?我認爲通常情況下,如果我沒有弄錯,虛擬funcs是否會被編譯,即使不用於維護與類原型的類佈局兼容?你能證實嗎?謝謝
這通常在鏈接階段自動解決,c或C++不需要這樣的關鍵字。 –
我寫了一個函數我希望它能夠編譯以儘快捕獲編譯器錯誤,因此我永遠不會使用宏或註釋將其從編譯中排除,因爲它無論如何都不會將它編入可執行文件中(如其他) – user463035818
幾乎所有*編譯器都可以無縫地執行此操作。這並不需要成爲語言標準的一部分。我不明白爲什麼負責人應該在開發人員註釋這樣的功能時,鏈接器會做出更好的決定。如果你知道某些東西會被閒置,就不要寫下來。 –