2014-02-22 72 views
1

我想爲我的程序使用C++ 11標準和O3優化。 通常我只使用編譯標誌:-std=c++11-O3,但我必須將源文件發送到自動編譯它的遠程服務器。所以基本上我唯一想到的是使用一些整潔的宏。我非常肯定可以定義優化的方式,因爲我在某個地方看到了它,但我仍然記不起它的樣子。通過宏定義編譯標誌(C++ 11和優化)

+1

你處理的問題不是技術問題,而是社會問題。如果遠程服務器管理員不想讓您指定命令行選項,則不應該嘗試指定命令行選項。如果遠程服務器管理員確實希望讓您指定命令行選項,那麼您將能夠找出一些界面來指定它們,這對您而言都很合適。 – hvd

+0

我已經跟服務器管理員談過了,他說他不能改變命令行選項,但如果我可以通過宏執行它,那麼它就沒關係。 – user3340553

+1

@ user3340553在這一點上,我認爲如果您可以向我們提供有關該服務的更多信息,可能會有所幫助。也許我們可以建議一個替代品,因爲這個出現「破碎」。再次,不知道更多,我們不能說。也許這是爲了比賽,規則(任意)限制編譯器設置? –

回答

3

你要求的是超出C++規範。

因此,如果它支持所有 - 任何地方 - 它將通過編譯指示來支持。我不知道有什麼編譯指示「編譯爲C++ 11」,所以我會說這是一個失敗的原因。還有千萬顯得有些優化編譯指示在那裏:

http://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html

但是,一定要記住使用#pragma爲完全的規範之外。如果編譯器命中一個,它可以做任何它喜歡的事情,並且仍然是標準的。這包括推出視頻遊戲(and this has been done)

所以長話短說:如果這是你的要求,那麼你需要告訴任何人,這是提供您需要一定的編譯器設置你的計劃您的編輯服務。

+0

該問題明確指定了g ++。 –

+0

而更重要的是(正如我前幾天在工作中發現的那樣),-Wpragmas + -Werror使得它錯誤。 –

+0

@KonradRudolph在標籤中(並不總是超顯式的),你的觀點是...?如果您知道gcc中的「編譯爲C++ 11」編譯指示,我會授予我從答案中學到的新東西。 – HostileFork