Saya sedang membaca utas lain di mana seorang pria bertanya tentang buku C ++ untuk pemula, dan salah satu programmer yang menjawab menulis ini:
Beberapa peringatan: hindari semua buku yang menyajikan "hello world" yang menyatakan
#include <iostream.h>
Saya membuka buku C ++ saya dan tentu saja itu termasuk header iostream seperti contoh di atas.
Kenapa itu buruk? Petunjuk apa lagi yang harus saya ingat ketika belajar C ++?
Latar Belakang: Saya mahir dengan C dan saya akan mulai belajar C ++ semester berikutnya.
c++
coding-style
code-quality
coding-standards
headers
Daniel Scocco
sumber
sumber
cstdio
, bukanstdio.h
(yang terakhir sudah ditinggalkan).<cstdio>
dijamin untuk memberikan namanamespace std
adalah alasan yang cukup bagi saya untuk memilihnya . Saya tahu bahwa itu mungkin juga memberi mereka ruang-nama global sama seperti yang<stdio.h>
bisa mereka sediakannamespace std
. Ini juga masalah konsistensi jika Anda membiasakan diri untuk selalu menggunakan<c…>
header. Dan untuk beberapa tajuk, Anda akan sangat menginginkan ini karena mereka meningkatkan antarmuka C dengan kelebihan fungsi tambahan, misalnya.Jawaban:
Header iostream.h adalah header non-standar dan tidak ada di semua platform. Sebenarnya tidak ada di sistem saya (menggunakan g ++ dan GNU libstdc ++). Jadi kode apa pun yang menggunakannya tidak akan dikompilasi di sistem saya.
The
iostream.h
Header digunakan untuk menjadi umum sebelum C ++ pertama kali distandarisasi pada tahun 1998. Namun sejak 98 standar yang digunakan<iostream>
sebagai pengganti<iostream.h>
, yang terakhir telah jatuh dari nikmat (menjadi non-standar dan semua) dan tidak lagi didukung pada semua platform. Kode yang menggunakannya harus dianggap kode warisan non-standar dan tidak portabel. Buku-buku yang mengajarkannya harus dianggap usang dan dihindari.sumber
#include <iostream.h>
adalah tanda bahwa buku itu ditulis sebelum standar C ++ pertama pada tahun 1998 (header standarnya adalahiostream
).Masalahnya adalah bahwa kode C ++ lama cenderung ditulis dengan cara yang dianggap praktik buruk saat ini. Khususnya,
std::string
danstd::vector
.close
fungsi eksplisit daripada RAII.iostream.h
bukan hal terburuk yang akan terjadi pada buku pra-1998, tetapi kemungkinan hal itu akan menjadi yang pertama bahwa buku pra-1998 akan salah.sumber
Mungkin ini datang agak terlambat tetapi untuk apa nilainya, pada kotak unix / linux lakukan
ls /usr/{local/,}include/c++/*
atau serupa, sesuai dengan tata letak dan jalur Anda. Anda dapat memilih untukgrep
mencari tajuk yang dimaksud, seperti:Ini memerlukan pencarian untuk
iostream.h
serta superstring lainnya.Atau jalankan
find / -type f -name iostream 2> /dev/null | grep include
ataulocate iostream | grep include
(asalkan database saat ini, jika tidak disertai panggilan keupdatedb
) - ini, bagaimanapun, akan mencetak juga mencakup seluruh non-sistem, jadi harap sesuaikan dengan tepat. Path C ++ yang sebenarnya mudah ditemukan dengan sesuatu seperti:Setara pada Windows dan mesin lainnya. Saya kira idenya jelas - file seperti
iostream.h
itu tidak ada dalam sistem termasuk path secara default lagi, Anda masih dapat menemukan distribusi libc ++ lama denganiostream.h
soft-linkediostream
atau sebagai salinannya. Jadi ini bukan masalah gaya, tetapi keadaan. Anda dapat mengirimkaniostream.h
proyek Anda sendiri dengan hanya memastikannya terkandung dalam jalur sertakan tempat kompiler mencari<...>
header.sumber
Hanya menjatuhkan 2 sen saya. Saya tidak berpikir ada korelasi antara ". H" dan kualitas buku. Ini adalah masalah sintaksis kecil. Kembali pada hari itu sebenarnya sytnax yang benar.
Apakah mungkin untuk memiliki buku yang bagus dengan iostream.h? Iya
Mungkinkah memiliki buku yang mengerikan dengan iostream? Iya
Saya akan mengandalkan ulasan pengguna online (dan ulasan saya sendiri setelah membaca) untuk menilai kualitas sebuah buku.
sumber