C++:如何强制libc声明到std ::?

5 c++ namespaces libc libstdc++

所以,我发现自己需要在我的C++程序中使用libc.但是,我不喜欢将它全局放在全局命名空间中.理想情况下,我想libc中的全部强行插入std::命名空间,所以我不得不做std::memcpy,而不是memcpy.

这可能吗?如何?如果需要,我愿意使用特定于编译器的宏(我只针对MS VC++ 10.0和GCC 4.6).

编辑:我的字面意思是"强制声明为std" - 这样它们在没有std ::前缀的情况下是不可调用的.另外,我包括cstdio,不是stdio.h.

谢谢!

Mat*_* M. 1

你不能这样做,除非它已经完成了。

该命名空间std为标准库保留,禁止向该命名空间添加新成员。因此,如果 C 标头尚未嵌入 中std,那么您别无选择,只能接受它。

另一方面,您可以完美地创建一个新的命名空间,cstd并使用指令将全局命名空间中的符号带入其中using......但这不会使它们从全局命名空间中消失。