Apakah Anda membaca C atau C ++ kompilasi kesalahan setelah yang pertama?

19

Saya tidak pernah mengerti mengapa kompiler C dan C ++ mencoba untuk memulihkan dari kesalahan dan melanjutkan parsing. Hampir selalu, kesalahan pertama menghasilkan aliran kesalahan palsu yang akan hilang segera setelah yang pertama diperbaiki. Setelah beberapa tahun pengalaman, saya hanya berhenti melihat kesalahan apa pun kecuali yang pertama dari setiap file. Saya menjalankan kembali kompiler dan kemudian melakukannya lagi sampai tidak ada lagi kesalahan. Apakah ini praktik umum?

alexk7
sumber
Saya kira saya hanya membaca yang pertama, tetapi saya tidak bekerja dengan ribuan juta solusi file sumber, jadi itu membantu.
Coder

Jawaban:

19

Terkadang kesalahan tidak terkait. Saya merasa lebih mudah untuk melihat daftar kesalahan dan memperbaiki akar penyebab dari serangkaian kesalahan terkait, kemudian memperbaiki kesalahan yang tidak terkait berikutnya . Jika proyek ini besar dan membutuhkan waktu cukup lama untuk dibangun, saya merasa bekerja dengan cara ini kurang membuat frustrasi daripada memperbaiki kesalahan pertama, mengkompilasi ulang, ulangi ...

FrustratedWithFormsDesigner
sumber
3
+1: Ingat, jika proyek ini besar dan membutuhkan waktu untuk membangun, sebaiknya jangan terlalu banyak mengubah antar kompilasi sehingga Anda dapat menemukan masalah yang Anda perkenalkan dengan relatif mudah.
Donal Fellows
Saya setuju bahwa dalam hal waktu kompilasi Anda sangat lama, mungkin berguna untuk mencari kesalahan lain yang tidak terkait, tetapi saya lebih memilih untuk memperbaiki masalah ketergantungan yang menyebabkan peningkatan bertahap yang lama ...
alexk7
8

Itu tergantung pada waktu kompilasi . Sebagai contoh, jika saya tahu bahwa saya baru saja mengubah header utama yang akan memicu pembangunan kembali seluruh proyek, saya pasti akan melihat lebih dekat pada sisa tumpukan kesalahan dan melihat apakah saya dapat memperbaikinya. Itu memberi saya perasaan yang lebih baik ketika saya berdiri untuk membuat kopi saat kompiler berjalan.

Alexander Gessler
sumber
4

Ya saya melakukan hal yang sama, kecuali saya menggunakan kompiler untuk membantu saya refactor dalam hal ini saya suka daftar lengkap kesalahan :)

Stephen Bailey
sumber
Banyak IDE modern memiliki alat refactoring yang tersedia di klik tombol, jadi refactor-by-compiler-error tidak diperlukan jika Anda memiliki akses dan kemampuan dengan alat tersebut. Kecuali Anda suka ...
FrustratedWithFormsDesigner
1
Ya tapi pekerjaan utama saya, IDE VS tidak memiliki C ++ :( Ketika tidak ada alat saya akan menemukan jalan!
Stephen Bailey
1
Visual Assist X dari Whole Tomato menambahkan refactoring ke VS untuk C ++.
stonemetal
4

Jika ada kesenjangan di nomor baris, compiler mungkin tidak pulih dan kemudian menemukan kesalahan lain.

Biasanya hanya mencoba untuk memperbaiki satu kesalahan dalam setiap kelompok.

Bo Persson
sumber
1

Kompiler yang lebih baik akan menghasilkan hasil yang lebih baik dan memberikan Anda kesalahan yang lebih bermanfaat setelah yang pertama, sering kali melalui semacam koreksi otomatis kesalahan sehingga kode yang mungkin baik setidaknya dapat diperiksa. Tapi kemudian, saya terbiasa bekerja di Java, di Eclipse, di mana kesalahan ketik sintaks langsung terdeteksi dan mudah diperbaiki, dan kesalahan kompiler lainnya cenderung lebih beragam dan lebih mudah bagi kompiler untuk pulih. Saya hanya dapat berasumsi bahwa ini mirip ketika bekerja di IDE Microsoft dan yang lainnya di C ++ atau C #.

jprete
sumber
0

Ya - atau setidaknya saya membaca sekilas tentang mereka. Sangat mudah untuk mencari tahu apakah kesalahan terkait (biasanya melihat nomor baris sudah cukup) dan saya suka memperbaiki semuanya dalam satu pass dan kemudian mengkompilasi ulang.

Nemanja Trifunovic
sumber
0

Saya melakukan ini (untuk membaca kesalahan melewati yang pertama) hanya jika kompilasi 1 cpp sangat panjang. Atau tidak tersedia. Kemudian saya lebih memilih untuk memastikan saya memperbaiki semua yang saya bisa mengidentifikasi dalam kesalahan kompiler sebagai tidak terkait dengan kesalahan pertama.

Ketika file cpp Anda dapat dikompilasi sendiri dan dilakukan dalam waktu kurang dari satu detik (atau Anda memiliki kesalahan pengarahan "intellisense" sebelum kompilasi dimulai) Anda tidak harus melakukan ini sebagian besar waktu.

Saat ini saya bekerja pada proyek di mana saya tidak dapat mengkompilasi satu cpp saja (dan saya tidak memiliki tangan pada sistem build jadi saya tidak dapat mengubah O__o itu) dan beberapa file cpp dapat membutuhkan waktu lebih dari sepuluh menit untuk dikompilasi ( bahkan setelah banyak upaya untuk mengurangi itu, kami hanya memotongnya hingga 50% dari waktu kompilasi asli ...).

Dalam pengaturan kompilasi yang sangat panjang ini, Anda cenderung berpikir banyak sebelum memukul "build" ... dan bahkan berpikir banyak setelahnya, untuk mungkin menemukan bug sebelum kompiler karena Anda tentu lebih cepat mendapatkannya secara mental daripada .

Klaim
sumber
-1

Cukup umum untuk melakukan apa yang Anda lakukan. Saya biasanya memberitahu peserta magang atau pemula yang kewalahan dengan jumlah kesalahan untuk mengabaikan hampir semua kesalahan kecuali yang pertama. Kemungkinan besar itu adalah kesalahan nyata yang perlu diperbaiki, dan bukan kesalahan hantu menyesatkan yang disebabkan oleh kesalahan sebelumnya. Beberapa kompiler (paling?) Memiliki opsi untuk berhenti mengkompilasi setelah kesalahan pertama karena alasan ini. Membangun sistem biasanya dapat dikonfigurasi untuk berhenti setelah file pertama yang memiliki kesalahan juga.

Namun, ada alasan untuk melanjutkan kompilasi setelah mendeteksi kesalahan juga. Misalnya, Anda mungkin ingin menghitung berapa banyak file yang memiliki kesalahan, atau untuk melihat apakah file header yang disertakan menyebabkan kesalahan di lebih dari satu file.

destenson
sumber