Dalam C 11, pengenalan constexpr sebagai kelayakan jenis untuk fungsi menimbulkan persoalan tentang hubungannya dengan sebaris, mekanisme sedia ada untuk fungsi inlining. Artikel ini mengkaji implikasi constexpr dan cara ia berinteraksi dengan inline.
Piawaian C 11 secara eksplisit menyatakan bahawa "fungsi constexpr dan pembina constexpr secara tersirat sebaris". Ini bermakna bahawa menggunakan constexpr sebagai penentu fungsi secara tersirat menetapkan penentu sebaris juga. Oleh itu, jika fungsi diisytiharkan constexpr, ia akan berkelakuan seolah-olah ia mempunyai penentu sebaris.
Ini membayangkan bahawa jika hujah bukan malar dihantar kepada fungsi constexpr, pengkompil masih akan cuba menyelaraskan fungsi seolah-olah ia diisytiharkan sebaris. Ini kerana fungsi constexpr diperlukan untuk memenuhi kriteria tertentu yang menjadikannya sesuai untuk sebaris, seperti mudah dan bukan rekursif.
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa sebaris specifier mempunyai kesan yang lebih ketara pada peraturan satu takrifan (ODR) daripada pada inlining sendiri. Fungsi dengan kelayakan sebaris berbeza boleh mempunyai berbilang takrifan, manakala fungsi constexpr, seperti fungsi sebaris, mesti mempunyai definisi tunggal.
Walaupun fungsi constexpr secara tersirat membayangkan sebaris, penentu sebaris mempunyai kesan terhad mengenai keputusan yang menyelaraskan. Pengkompil akhirnya menentukan sama ada untuk menyelaraskan fungsi berdasarkan pelbagai faktor, termasuk saiz dan kerumitannya. Fungsi Constexpr pada mulanya direka bentuk agar sesuai untuk inlining, tetapi kelonggaran berikutnya telah membenarkan fungsi constexpr yang lebih kompleks.
Atas ialah kandungan terperinci Bagaimanakah `constexpr` Berinteraksi dengan `sebaris` dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!