我正在尋找一種簡單的方法來將某些g ++(g ++ - 4.9是特定的)編譯選項本地化爲某些代碼行或至少有針對性的功能。我一般來說都很感興趣,但也有具體到-fast-math
,-ffinite-math-only
和-fno-signed-zeros
選項。在代碼中本地化g ++編譯選項
我推測可以使用make
實用程序在* .cpp文件級別進行本地化,但我希望有一種方法可以通過#pragma或__attribute__或其他東西在代碼本身中啓用它。我想這樣做不僅是爲了儘量減少對外部文件的依賴(即不正確的makefile
的風險),而且希望將某些FP行爲超定位到函數中的特定方程。如果在項目構建中未啓用期望的編譯器指令(例如makefile
丟失或不適當修改),如果不能通過內聯指令對FP行爲進行本地化,我該怎麼辦才能至少觸發編譯時錯誤。
我認爲這種內聯優化可能是編譯器特定的,在這種情況下,g ++,但這是我願意採取的折中方案。
感謝。我發現了一些教程/幫助討論用於優化級別(例如O0,O1,O2)的\ __屬性___,但從描述來看,它對我來說並不明顯,它也適用於其他選項,如快速數學等。 – codechimp