2016-05-31 83 views
-1

我剛剛安裝了CodeLite和最新版本的TDM-GCC編譯器。它支持C++ 11和C++ 14。但是,當我使用nullptr編寫程序時,它仍然告訴我'nullptr' was not declared in this scope即使使用C++ 11和C++ 14,nullptr也不會聲明

enter image description here

還有什麼我必須爲了做nullptr由編譯器所接受?

+11

只是一個猜測,也許最後一個選項'-std = c99'覆蓋了其他'-std'選項。但是,再次,只是一個猜測:) – Rakete1111

+0

@ Rakete1111如果我點擊'Delete' - >'Apply' - >'OK',並重新打開Build Settings,它將重新應用'-std = c99'選項。因此,根據我所知,無法禁用該功能 –

+0

FWIW,'-std = c99'僅適用於C程序,'-std = C++ 14'僅適用於C++程序。只有一個或另一個適用;如果您在單個gcc調用中指定了這兩個函數,那麼您將收到有關不應用的選項的警告(我不知道這些警告是否通過GUI傳輸。)如果編譯器認爲您的程序在C中,那麼您贏了顯然,無法訪問'nul​​lptr'。 – rici

回答

1

您需要爲您的項目啓用C++ 11。您正在顯示的對話框允許您修改發送給編譯器的實際開關以用於不同的選項(稍後我將對此進行解釋)。首先,要爲項目啓用C++ 11,右鍵單擊「工作區視圖」(左窗格)中的項目文件夾,然後選擇「設置」(也可以從主菜單欄工作區 - >打開活動項目設置...或Alt-F7)。

從設置列表(對話框的左側)中選擇「編譯器」,然後單擊「C++編譯器選項」選項右側的省略號。

這將顯示「編譯器選項」對話框,在這裏您可以選中「啓用C++ 11功能[-std=c++11]」。

現在,正如我在開始時所提到的,您顯示的對話框允許您修改發送給編譯器的開關。假設您正在使用具有開關「-std=gnu++11」的編譯器。您可以在「構建設置」對話框(您顯示的那個)中添加此開關,然後在使用此構建工具的任何項目中對其進行檢查。

這非常複雜,但需要允許使用IDE作者甚至沒有聽說過的不同構建工具。

+0

ahhhhh非常感謝你! –

+0

儘管對@n.m。有完全的尊重,但項目設置對話框可從主菜單訪問,儘管不是完全顯而易見的地方(「Workspace」菜單)。 – iwbnwif

+0

等一下,代表「Enable C++ 11」的標籤是* named *'-std = C++ 11',這也是默認值嗎?這是......特別的。 – Yakk