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.
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