Saya mencoba untuk mengkompilasi menggunakan g++
dan baik -std=c++11
atau c++0x
bendera.
Namun, saya mendapatkan kesalahan ini
cc1plus: error: unrecognized command line option "-std=c++11"
g ++ --version
g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-std=c++0x
dengan g ++g++ --version
. Kemudian posting nomor versinya di sini.g++-
di jendela konsol Anda.Jawaban:
Melihat dari versi G ++ Anda, Anda perlu memperbaruinya dengan buruk. C ++ 11 hanya tersedia sejak G ++ 4.3. Versi terbaru adalah 4.7.
Di versi sebelum G ++ 4.7, Anda harus menggunakan
-std=c++0x
, untuk versi yang lebih baru yang dapat Anda gunakan-std=c++11
.sumber
Mengutip dari situs gcc :
Jadi, mungkin Anda menggunakan versi g ++ yang tidak mendukung
-std=c++11
. Coba-std=c++0x
saja.Ketersediaan fitur C ++ 11 hanya untuk versi> = 4.3.
sumber
kamu harus mencoba ini
g++-4.4 -std=c++0x or g++-4.7 -std=c++0x
sumber
Saya juga mendapat kesalahan yang sama, mengkompilasi dengan -D flag memperbaikinya, Coba ini:
g ++ -Dstd = c ++ 11
sumber
std::vector<int> v = {1, 2, 3};
untuk menguji dan itu melemparkan semua jenis kesalahan di atasnya (kesalahan berbeda daripada tanpa bendera, cukup menarik).-D
argumen baris perintah setara dengan memasukkan#define
dalam kode sumber Anda. Jadi perintah ini seperti memiliki#define std c++11
. Dapatkah Anda membayangkan bagaimanastd::string
akan didefinisikan ulangc++11::string
? Tidak terlalu berguna sama sekali.