Apakah Perubahan Pecah Yang Diperkenalkan dalam C 11?
Salah satu perubahan ketara yang diperkenalkan dalam C 11 ialah operator eksplisit bool() dalam perpustakaan standard, menggantikan contoh operator void*(). Walaupun perubahan ini harus menangani kod tidak sah, terdapat kemungkinan perubahan pecah lain yang perlu dipertimbangkan.
Ketidakserasian Bahasa Teras
-
Tafsiran Huruf Rentetan Terubahsuai: Makro pratakrif seperti "u8" boleh mengubah suai rentetan literal.
-
Huruf Rentetan Ditakrifkan Pengguna: "_x" dalam literal rentetan kini mencipta literal rentetan yang ditakrifkan pengguna, bukannya mengembangkan makro.
-
Kata Kunci Baharu : Kata kunci yang diperkenalkan seperti "constexpr" dan "thread_local" boleh memecahkan pengecam sedia ada nama.
-
Pengubahsuaian Literal Integer: Literal integer yang melebihi julat "panjang" kini boleh menjadi "panjang panjang."
-
Pengubahsuaian Bahagian Integer: Tingkah laku pembundaran pembahagian integer C 03 mungkin berbeza daripada pembundaran C 11 ke arah 0.
-
"auto" sebagai Penentu Storan: Kod C 03 menggunakan "auto" sebagai penentu storan mungkin menjadi tidak sah.
-
Menyempitkan Penukaran: C 03 penyempitan penukaran (mis., dua kali ganda kepada int) kini mungkin tidak sah.
-
Pemadaman Fungsi Ahli Khas Tersirat: Fungsi ahli yang ditakrifkan secara tersirat yang salah akan dipadamkan secara automatik.
-
Spesifikasi Pengecualian Pemusnah: Pengguna- pemusnah yang diisytiharkan kini mempunyai noexcept(true) tersirat spesifikasi.
-
Penghapusan Pengisytiharan "eksport": Pengisytiharan C 03 menggunakan "eksport" kini tidak sah.
-
Pengubahsuaian Penutup Templat: "> >" dalam templat kini boleh menutup dua templat dan bukannya hanya dianggap sebagai operator anjakan.
-
Panggilan Bergantung bagi Fungsi Pautan Dalaman: Panggilan bergantung bagi fungsi pautan dalaman kini dibenarkan.
Perpustakaan Pengubahsuaian
-
Pengecam Ruang Nama: Pengecam yang ditambahkan pada pustaka standard mungkin memecahkan kod sedia ada.
-
Kepala Termasuk: Pengepala sebelum ini terletak dalam pengepala standard tertentu (cth., , ) mungkin telah berpindah ke tempat lain.
-
Ruang Nama "posix": Ruang nama "posix" kini dikhaskan untuk penyeragaman masa hadapan.
-
Definisi Makro : Mentakrifkan "override," "final," "carries_dependency," atau "noreturn" seperti yang mungkin makro kini menjadi tidak sah.
Atas ialah kandungan terperinci Apakah Perubahan Memecahkan Yang Perlu Saya Ketahui Semasa Berhijrah ke C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!