Panduan Komprehensif ini meneroka selok -belok tingkah laku yang tidak ditentukan di C, melampaui penjelasan buku teks biasa. Ideal untuk pengaturcara C yang berpengalaman, menyelam yang mendalam ini ke dalam aspek-aspek yang paling tidak jelas subjek adalah kemuncak projek enam bulan yang asalnya dirancang sebagai siri sebelas bahagian, tetapi berkembang menjadi dua belas. Ditulis oleh Dmitry Sviridkin dan disunting oleh Andrey Karpov, karya ini dijadualkan untuk penerbitan cetak masa depan.
Buku ini menyelidiki pelbagai topik, termasuk:
- Pengenalan: Menentukan tingkah laku yang tidak ditentukan dan akibatnya; Meneroka penukaran penyempitan dan penukaran jenis tersirat.
- Isu-isu integer dan terapung: Memeriksa limpahan integer yang ditandatangani, keanehan terapung, promosi integer, dan nuansa
char
dan lanjutan tanda.
- Pengurusan memori dan rujukan: Menangani rujukan menggantung,
string_view
, berasaskan pelbagai untuk gelung, rujukan diri, dan std::vector
pembatalan rujukan.
- fungsi dan mutabiliti lambda: menganalisis senarai penangkapan fungsi lambda, tuple, mutabiliti yang tidak dijangka, rujukan tersirat, penggunaan-selepas bergerak, dan lanjutan seumur hidup.
- Parsing dan gerakkan semantik: Mengatasi Parse yang paling menyusahkan, pemalar yang tidak konsisten, bergerak semantik,
std::enable_if_t
vs std::void_t
, dan terlupa return
pernyataan.
- pengendali dan I/O: meliputi ellipsis dan fungsi,
operator[]
, cabaran iostreams
debugging, pengendali koma, fungsi-blok, dan jenis bersaiz sifar.
- rentetan dan penunjuk pintar: Membincangkan rentetan yang ditamatkan null,
std::shared_ptr
, penukaran jenis eksplisit, dan fungsi standard yang selamat.
- gelung, rekursi, dan buffer: Meneroka gelung tak terhingga, masalah halangan, rekursi, pengendalian, dan limpahan penampan.
noexcept
- raii, penunjuk, dan permulaan: Membandingkan (n) rvo dan raii, memeriksa penunjuk penunjuk null, kegagalan perintah permulaan statik, fungsi inline statik, pelanggaran ODR, dan nama terpelihara.
Jenis-jenis, pembolehubah, dan julat: menyelidiki jenis remeh dan ABI, pembolehubah yang tidak diinisialisasi, C 20 julat yang tidak terkawal, fungsi maya yang tidak maya, dan VLA.
- Pointers, Concurrency, and Signals: Menangani petunjuk yang tidak sah, penempatan baru untuk tatasusunan, perlumbaan data, kebuntuan mutex, keselamatan isyarat, dan amalan terbaik untuk mengelakkan kebuntuan.
- vektor, penjajaran, dan analisis statik: menganalisis dan
, rujukan yang tidak ditandatangani, hayat objek, analisis statik dan tingkah laku yang tidak ditentukan, dan menyimpulkan ucapan. -
std::vector::reserve
Pelesenan dan Penggunaan: std::vector::resize
Kerja ini tersedia untuk rujukan, dengan atribusi yang betul. Penyalinan atau pembiakan memerlukan kebenaran penulis (dmisvrl1@gmail.com). Penggunaan komersial atau arahan berasaskan yuran dilarang.
Mengenai penulis:
- Dmitry Sviridkin: Jurutera perisian di AWS dengan pengalaman luas dalam pembangunan perisian berprestasi tinggi dan latar belakang dalam pengaturcaraan sistem C dan Linux.
- Andrey Karpov: Pengasas bersama projek PVS-Studio dengan lebih dari 15 tahun pengalaman dalam analisis kod statik dan kualiti perisian, dan penerima anugerah Microsoft MVP.
Atas ialah kandungan terperinci Panduan Programmer s untuk tingkah laku yang tidak ditentukan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!