Bagaimana cara menggunakan C ++ 11 dengan g ++?

21

Saat ini saya mengetik semua kode saya di gedit dan menggunakan terminal untuk mengkompilasi program saya. Untuk melakukannya, saya mengetik:

$ g++ main.cpp -o main
$ ./main

Dan ini berhasil. Namun, itu tidak menggunakan C ++ 11. Bagaimana saya bisa memeriksa versi C ++ saya dan juga kompilasi via terminal menggunakan C ++ 11?

muru
sumber
Apakah Anda harus selalu menyertakan -std = c ++ 11 atau apakah ada pengaturan sehingga setiap kali saya kompilasi secara otomatis akan memenuhi tuntutan c ++ 11 atau
French Mike

Jawaban:

53

Ini bisa Anda lakukan dengan menggunakan -std=c++11bendera. Ini sebuah contoh:

g++ -std=c++11 -Wall -Wextra -Werror main.cpp -o main

Mode ini dapat dipilih dengan -std=c++11bendera baris perintah, atau -std=gnu++11untuk mengaktifkan ekstensi GNU juga. ( Sumber )

Lihat penjelasan dari bendera lain di bawah ini. Saya sangat percaya bahwa menggunakan setidaknya bendera kesalahan itu akan membuat hidup Anda lebih mudah dalam jangka panjang. Setelah Anda memiliki pengetahuan yang lebih baik tentang apa yang dilakukan skrip Anda, Anda dapat menghilangkan peringatan jika diperlukan untuk mencapai hasil tetapi itu tidak harus menjadi standar. Semoga ini bisa membantu Anda. Inilah tempat yang bagus untuk mulai membaca.

  • -Wall - mengaktifkan semua peringatan utama.
  • -Wextra - mengaktifkan peringatan penting lainnya.
  • -Werror- membuat semua peringatan menjadi kesalahan, menyebabkan kompilasi gagal jika ada peringatan yang dilaporkan.

Sumber:

  1. GCC: Ringkasan Opsi
  2. GCC: Opsi untuk Meminta atau Menekan Peringatan
Videonauth
sumber
5
Terima kasih! Apakah Anda keberatan menjelaskan apa tujuan "-Wall" dan "-Werror" melayani dalam perintah itu?
1
Menambahkannya ke jawaban saya.
Videonauth
7
@ dhaneku.b: Mengapa tidak membaca dokumentasinya? Untuk itulah ia ada.
Lightness Races with Monica
9
@LightnessRacesinOrbit Karena dokumentasi tidak selalu akan menjelaskan mengapa Videonauth berpikir penting untuk menambahkannya, terlepas dari kenyataan bahwa mereka tidak ada dalam contoh perintah asli, atau perlu menjelaskan jenis interaksi penting apa "-Wall" dan " -Werror "mungkin dengan" -std = c ++ 11 ". (Ya, jawaban untuk yang terakhir dalam hal ini adalah "tidak ada yang istimewa", tetapi dokumentasi tidak akan mengatakan itu, dan ada banyak kasus sudut aneh yang tidak disebutkan dalam dokumentasi. "Tidak adanya bukti bukan t bukti absen ", dan semua itu.)
RM
2
Mode ini dapat dipilih dengan -std=c++11bendera baris perintah, atau -std=gnu++11untuk mengaktifkan ekstensi GNU juga. ( Sumber )
Videonauth