Saya belajar C ++ dan saya menggunakan g ++ di Linux untuk berlatih.
Saya ingin tahu apakah orang yang bekerja sebagai programmer menggunakan flag g ++ -pedantic dan juga pentingnya di dunia nyata.
Bagaimana dengan kompiler lain, apakah mereka juga mengizinkan ini? Apakah ini menjadi standar de-facto?
Saya tertarik karena saya membaca C ++ Primer di mana penulis menunjukkan bahwa ilegal untuk menggunakan ekspresi non-const sebagai dimensi dalam definisi array dan g ++ secara default memungkinkannya. Dan mungkin ada hal-hal lain yang tidak saya sadari.
Jawaban:
Ya, benar-benar melakukan ini. Bahkan, Anda perlu mempelajari halaman manual dan mengaktifkan lebih peringatan dari
-pedantic
dan-Wall
akan melakukan.Tidak, tidak ada standar. Penggunaan MSVC
/W4
misalnya.sumber
-Wall -Wextra -Werror -pedantic -std=c++0x
:)-pedantic
dengan C ++ karena manual GCC menyiratkan itu hanya dimaksudkan untuk C, dan saya sudah pindah ke menggunakan-std=c++14
dalam proyek-proyek baru.-Wall -Wextra -Werror -std=c++14
:)-Werror
mengubah semua peringatan menjadi kesalahan. Tetapi-pedantic-errors
hanya membuat kesalahan karenaStandard ICO C++
pelanggaran.Meskipun saya belum memprogram C ++ selama beberapa waktu, saya menyarankan Anda untuk menggunakan flag ini. Ini membantu Anda membuat kode yang sesuai standar dan akan membuat hidup semua orang lebih mudah. AFAIK, kebanyakan kompiler lain tidak mendukung ekstensi gcc / g ++.
Saya benci misalnya, ketika saya tidak dapat mengkompilasi kode hanya karena pengembang asli memutuskan untuk kode terhadap ekstensi kompiler non-standar.
Saya bertaruh bahwa sejumlah besar (katakanlah 20%) dari program linux yang ditulis dalam C / C ++ tidak akan dikompilasi dengan apa pun kecuali gcc / g ++, yang membuat saya agak sedih. Selalu patuhi standar.
sumber
Secara pribadi saya menggunakan:
-Wall -Wextra -Wshadow -Weffc ++ -Wstrict-aliasing -ansi -pedantic -Werror
Dengan demikian menyalakan sejumlah peringatan, tetapi yang lebih penting memperlakukan semua peringatan sebagai kesalahan (karena kebanyakan peringatan adalah kesalahan logis dalam pemikiran Anda).
sumber
-Wunreachable-code -Wno-long-long
-g -pg -fprofile-arcs -ftest-coverage
-g -O0
-O3
Sangat penting untuk menggunakan
-pedantic
bendera.Saya hanya akan menambahkan, bahwa dengan standar saat ini disarankan untuk menggunakan sesuatu yang mirip dengan:
Dimana:
-std=c++17
memintanya untuk mematuhi revisi standar C ++, diterbitkan pada tahun 2017, Anda dapat membaca lebih lanjut tentang hal ini di sini .-Wall
memberitahukannya kepada:-Wextra
memintanya untuk mengaktifkan beberapa peringatan lagi, masih belum semuanya.-Werror
memintanya untuk membuat semua peringatan menjadi kesalahan.-Wpedantic
atau hanya-pedantic
memberitahukannya kepada:-pedantic-errors
memintanya untuk memberikan kesalahan setiap kali standar dasar (lihat -Wpedantic) memerlukan diagnostik.Set ini biasanya berguna tidak hanya untuk pemula, karena mereka akan secara bertahap belajar setiap peringatan memiliki potensi untuk menghasilkan kesalahan, tetapi juga untuk penggunaan normal.
Semua opsi peringatan dijelaskan secara rinci di sini di halaman GNU / GCC .
sumber