C ++ 11 Standardından (vurgu benim):
D.5 C standart kitaplık başlıkları [depr.c.headers]
- C standart kitaplığıyla uyumluluk için ...
- Her biri name.h biçiminde bir ada sahip olan her C başlığı, standart kitaplık ad alanına karşılık gelen cname başlığıyla yerleştirilen her ad , genel ad alanı kapsamına yerleştirilmiş gibi davranır . Öyle bu isimler ilk ilan veya ad alanı kapsamında tanımlanan olmadığını belirtilmemiş (3.3.6) ait ad std ve sonra açık kullanılarak-beyanname (7.3.3) ile genel ad kapsamı içine enjekte edilir.
- Örnek: Başlık , tanımlarını ve tanımlarını
<cstdlib>
kesinlikle ad alanı içinde sağlar
std
. Ayrıca bu adları genel ad alanı içinde sağlayabilir. Başlık , C Standardında olduğu gibi , küresel ad alanı içinde <stdlib.h>
kesinlikle aynı bildirimleri ve tanımları sağlar . Bu isimleri isim alanı içinde de sağlayabilir .std
«Name.h» üstbilgilerinin kullanılması kullanımdan kaldırıldı, bunlar gelecekteki revizyonlardan kaldırılmaya aday olarak belirlendi.
Bu yüzden, "cname" başlıklarını eklemeyi ve std
isim alanındaki tanımları ve bildirimleri kullanmayı öneririm .
Bazı nedenlerden dolayı «name.h» başlıklarını kullanmanız gerekiyorsa (kullanımdan kaldırılmıştır, yukarıya bakın), global ad alanındaki bildirimleri ve tanımları kullanmanızı öneririm.
Başka bir deyişle: tercih et
#include <cstdio>
int main() {
std::printf("Hello world\n");
}
bitmiş
#include <stdio.h>
int main() {
printf("Hello world\n");
}
C
kütüphane sembollerinin küresel isim alanına boşaltılmasını zorunlu kılmaları durumunda,std::
nitelikli sürümleri kullanmayı tercih ederim . (Ayrıca bunu yasadışı yapmalarını isterdim).