我一直认为,如果你这样做#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
.