Garis bawah ganda dicadangkan untuk implementasi
Jawaban dengan suara terbanyak mengutip Pemrograman di C ++: Aturan dan Rekomendasi :
"Penggunaan dua garis bawah (` __ ') dalam pengidentifikasi disediakan untuk penggunaan internal kompiler sesuai dengan standar ANSI-C. "
Namun, setelah membaca beberapa standar C ++ dan C, saya tidak dapat menemukan penyebutan garis bawah yang dibatasi hanya untuk penggunaan internal kompiler. Standar tersebut lebih umum, dengan menggunakan garis bawah ganda untuk implementasinya .
C ++
C ++ (draf kerja saat ini, diakses 2019-5-26) menyatakan dalam lex.name
:
- Setiap pengenal yang berisi garis bawah ganda __ atau diawali dengan garis bawah yang diikuti dengan huruf besar dicadangkan untuk implementasi untuk penggunaan apa pun.
- Setiap pengenal yang dimulai dengan garis bawah dicadangkan untuk implementasi untuk digunakan sebagai nama di namespace global.
C
Meskipun pertanyaan ini khusus untuk C ++, saya telah mengutip bagian yang relevan dari C standar 99 dan 17:
C99 bagian 7.1.3
- Semua pengenal yang dimulai dengan garis bawah dan huruf besar atau garis bawah lainnya selalu disediakan untuk penggunaan apa pun.
- Semua pengenal yang dimulai dengan garis bawah selalu disediakan untuk digunakan sebagai pengenal dengan cakupan file di ruang nama biasa dan tag.
C17 mengatakan hal yang sama dengan C99.
Apa implementasinya ?
Untuk C / C ++, implementasi secara longgar mengacu pada kumpulan sumber daya yang diperlukan untuk menghasilkan file yang dapat dieksekusi dari sumber pengguna. Ini termasuk:
- preprocessor
- penyusun
- linker
- perpustakaan standar
Contoh implementasi
Ada sejumlah implementasi C ++ berbeda yang disebutkan di Wikipedia . (tanpa tautan tautan, ctrl + f "implementasi")
Berikut adalah contoh implementasi Digital Mars 'C / C ++ yang mencadangkan beberapa kata kunci untuk fitur miliknya.