簡體   English   中英

用c ++編譯14

[英]Compile in c++14

因此,在我的CSE課程中,我們現在可以使用頭文件來處理我們正在編寫的程序。

不幸的是我無法使用該標頭編譯終端,它會產生很多錯誤(只用'g ++'編譯)。 另外,當我在大學時我正在使用PuTTY時,我在使用此標題時會遇到相同的錯誤。 但是,當我用'g ++ -std = c ++ 14'編譯時,我沒有得到錯誤。

我已經嘗試在我的mac上的終端上使用此命令進行編譯,但它說它無法識別c ++ 14部分。

dhcp-10-202-147-243:hw1pr1 Admin$ g++ -std=c++14 hw1pr1.cpp
error: invalid value 'c++14' in '-std=c++14'

任何有關如何使其工作的幫助將不勝感激。 希望這一切都有某種意義。

這是我用頭文件編譯時得到的錯誤我在終端只用g ++談論。

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:212:5: warning: 
      Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map>
      [-W#warnings]
#   warning Use of the header <ext/hash_map> is deprecated.  Migrate to ...
    ^
In file included from read_first_name.cpp:1:
./std_lib_facilities_4.h:43:20: error: no matching function for call to object
      of type 'hash<char *>'
            return hash<char*>()(s.c_str());
                   ^~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/__hash:39:12: note: 
      candidate function not viable: 1st argument ('const value_type *'
      (aka 'const char *')) would lose const qualifier
    size_t operator()(char *__c) const _NOEXCEPT
           ^
In file included from read_first_name.cpp:1:
./std_lib_facilities_4.h:112:8: warning: comparison of unsigned expression < 0
      is always false [-Wtautological-compare]
                if (i<0||size()<=i) throw Range_error(i);
                    ~^~
./std_lib_facilities_4.h:118:8: warning: comparison of unsigned expression < 0
      is always false [-Wtautological-compare]
                if (i<0||size()<=i) throw Range_error(i);
                    ~^~
3 warnings and 1 error generated.

當我使用PuTTY和'g ++ std = c ++ 14'時,這個錯誤不會發生並且程序將完全編譯

C ++標准之間有很多變化,因此在一個版本中有效的內容不需要在另一個版本中。

g ++默認為-std=gnu++98 for C ++ ,這是幾十年前使用GNU擴展增強的C ++ 98標准(大多數都符合要求)。

選擇正確的版本: -std=c++1y -pedantic非常接近C ++ 14。

C ++ 14中引入的哪些更改可能會破壞用C ++ 11編寫的程序?

看看你說你必須使用的內容和.cpp文件的名稱格式,我想我在同一個班級。 一年后,看起來像,但這是我的存檔解決方案:

std_lib_facilities.h頭文件附帶Bjarne Stroustrup教科書“編程:使用C ++的原理和實踐”。 對於那些沒有意識到的人,Bjarne Stroustrup發明了C ++(他非常清楚他在談論什么)。 順便說一句,如果花時間實際閱讀它,這本書是學習C ++的絕佳方式。 std_lib_facilities.h頭文件只是一個方便的C ++初學者頭文件,包含教科書中使用的所有主要標准庫的鏈接,以及一些幫助解決潛在錯誤或錯誤的輔助函數,或者只是方便學習(例如一個error()函數,它為學生處理簡單的異常拋出,或者為向量添加“越界”檢查)。 它最終只是一種允許學生跳入代碼而無需了解標題細節的方法。 Stroustrup使用C ++進行更新,因此包含了幾個需要c ++ 11標准的庫。 CSCE部門希望其學生(至少在早期課程中)連接到該部門的Unix系統並從那里進行編譯,以避免與下載和更新編譯器混淆。

我事先已經有過幾個C ++類,因此已經在我的Ubuntu筆記本電腦上設置了g ++。 我避免包括std_lib_facilities盡可能長,因為我得到了與Topic Creator Joe相同的錯誤,其中g ++不識別“c ++ 11”部分(手動包括所需的庫工作正常,直到我們必須使用教科書中使用其中一個標題輔助函數的類)。 最后,我在網上找到了一個幫助主題,建議我簡單地將我的g ++編譯器更新到4.7或更高版本,因為4.6及更低版本不支持C ++ 11(當然還有C ++ 14)。 與在Mac或Windows上可能習慣的更新相比,這是奇怪的相關,我懷疑確切的過程是否會適用,但那可能是問題:它只是g ++的舊版本,它需要一個更新以編譯C ++ 11及更高版本。 我建議您搜索更新Mac的g ++ / gcc的方法。

你應該知道,其他任何有這個問題的人都會發現這個並沒有解決他們的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM