Judulnya cukup deskriptif diri. Saya telah mengunduh Qt Creator 2.7.0, dan saya mencoba mengkompilasi beberapa kode C ++ 11 dasar:
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
x *= 2;
}
Saya menerima kesalahan berikut:
range based for loops are not allowed in c++ 98 mode
Namun, menurut artikel ini versi Qt Creator ini mendukung C ++ 11. Jadi bagaimana cara mengaktifkannya?
Jawaban:
Menurut situs ini tambahkan
CONFIG += c++11
ke file .pro Anda (lihat di bagian bawah halaman web itu). Ini membutuhkan Qt 5.
Jawaban lainnya, menyarankan
QMAKE_CXXFLAGS += -std=c++11
(atauQMAKE_CXXFLAGS += -std=c++0x
)juga bekerja dengan Qt 4.8 dan gcc / dentang.
sumber
-std=c++11
, maka itu juga harus mendukung-std=c++0x
flag (yang sudah usang) juga, dan kedua flag tersebut seharusnya memiliki efek yang identik (yang tampaknya tidak berlaku pada mesin Anda). Jika kompiler mendukung-std=c++0x
, itu tidak berarti ia mengerti-std=c++11
. Oleh karena itu, memilih-std=c++0x
sebagai default untuk mode kompatibilitas C ++ 11 adalah pilihan yang masuk akal. Di komputer saya, setidaknya menurut halaman manual ,-std=c++0x
dan-std=c++11
identik.-std=c++11
jika kompiler mendukungnya, dan Qt bisa cukup pintar untuk melakukannya. Nah, jika masalah ini sangat menyakitkan bagi Anda, Anda dapat mengajukan laporan bug ...Tambahkan ini ke file .pro Anda
atau
sumber
Sebagai alternatif untuk menangani kedua kasus yang dibahas dalam jawaban Ali yang luar biasa, saya biasanya menambahkan
ke file proyek saya. Ini bisa berguna ketika Anda tidak terlalu peduli tentang versi Qt mana yang digunakan orang dalam tim Anda, tetapi Anda ingin mereka mengaktifkan C ++ 11 dalam hal apa pun.
sumber
tambahkan ke file qmake Anda
sumber
Jika Anda menggunakan versi QT sebelumnya (<5) coba ini
sumber
Satu-satunya tempat saya berhasil membuatnya bekerja adalah dengan mencari di:
Kemudian pada baris:
Edit:
sumber