Dari C ++ 11 Standard (penekanan saya):
Header perpustakaan standar D.5 C [depr.c.headers]
- Untuk kompatibilitas dengan pustaka standar C ...
- Setiap header C, yang masing-masing memiliki nama dalam format name.h , berperilaku seolah-olah setiap nama yang ditempatkan di namespace library standar dengan header cname yang sesuai ditempatkan dalam cakupan namespace global . Tidak ditentukan apakah nama-nama ini pertama kali dideklarasikan atau ditentukan dalam lingkup namespace (3.3.6) dari namespace std dan kemudian dimasukkan ke dalam cakupan namespace global dengan menggunakan deklarasi eksplisit (7.3.3).
- Contoh: Header
<cstdlib>
pasti memberikan deklarasi dan definisinya di dalam namespace
std
. Ini juga dapat memberikan nama-nama ini dalam namespace global. Header <stdlib.h>
pasti memberikan deklarasi dan definisi yang sama dalam namespace global , seperti di C Standard. Ini juga dapat memberikan nama-nama ini dalam namespace std
.
Menggunakan header «name.h» tidak digunakan lagi, header tersebut telah diidentifikasi sebagai kandidat untuk dihapus dari revisi mendatang.
Jadi, saya akan menyarankan untuk memasukkan header «cname» dan menggunakan deklarasi dan definisi dari std
namespace.
Jika Anda harus menggunakan header «name.h» karena beberapa alasan (sudah usang, lihat di atas), saya akan menyarankan untuk menggunakan deklarasi dan definisi dari namespace global.
Dengan kata lain: lebih memilih
#include <cstdio>
int main() {
std::printf("Hello world\n");
}
lebih
#include <stdio.h>
int main() {
printf("Hello world\n");
}
C
simbol perpustakaan ke namespace global menjadi ilegal, saya lebih suka menggunakanstd::
versi yang memenuhi syarat. (Ditambah saya agak berharap mereka membuatnya ilegal).