"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que `printf` funciona sem `std::` em C++ quando `cstdio` está incluído?

Por que `printf` funciona sem `std::` em C++ quando `cstdio` está incluído?

Publicado em 17/11/2024
Navegar:676

 Why Does `printf` Work Without `std::` in C   When `cstdio` is Included?

cstdio stdio.h Namespace

A referência C para cstdio afirma que "Cada elemento da biblioteca é definido dentro do namespace std." No entanto, você descobriu que std::printf e printf funcionam, levantando a questão de saber se os cabeçalhos C incluem símbolos em ambos os namespaces.

A resposta é mais sutil.

Incluindo cstdio

Incluir cstdio importa símbolos para o namespace std e possivelmente para o namespace global. Isso ocorre porque cstdio inclui stdio.h, que é um cabeçalho estilo C.

Incluindo stdio.h

Incluindo stdio.h importa símbolos para o namespace global e possivelmente no namespace std. Isso ocorre porque stdio.h é um cabeçalho estilo C.

Recursos de compatibilidade

O uso de cabeçalhos estilo C em C é um recurso de compatibilidade. O padrão C 11 especifica que, para compatibilidade com a biblioteca padrão C, a biblioteca padrão C fornece 25 cabeçalhos C, incluindo cstdio e stdio.h.

O padrão afirma ainda que cada cabeçalho C "se comporta como se cada nome colocado no namespace da biblioteca padrão pelo cabeçalho cname correspondente é colocado dentro do escopo do namespace global."

Conclusão

Em resumo, quando incluindo cabeçalhos de estilo C em C , os símbolos podem ser importados para os namespaces std e globais, dependendo dos cabeçalhos específicos usados ​​e da implementação do compilador. No entanto, nem sempre é garantido que ambos os namespaces conterão os mesmos símbolos.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3