我一直认为,如果你这样做#include <cheader>(header像 stdio/stdlib/string 这样的标准 c++ 标头在哪里),它与 相同#include <header.h>,但包装在std命名空间中。那么该代码片段如何编译(g ++ 4.7.3)?
#include <cstdlib>
int main()
{
malloc(1);
return 0;
}
如果标准 C 函数无论如何都将位于全局命名空间中,为什么还要包括<cstdio>then (而不是)?<stdio.h>
第二个问题是——我应该怎么做才能将其中一些函数从全局命名空间中取出(同时使用 c++ 头文件)?例如,我不想malloc在全局命名空间中,因为我有一个家庭作业:编写我自己的内存分配器(特别是函数) malloc,free我将编译成动态库并使用LD_PRELOAD.