可能重复:
在命名空间块中包装#include是个好主意吗?
// Method One
#ifndef XXX_H
#define XXX_H
#include <iostream>
#include "myhead.h"
namespace XXX
{
/...
}
#endif
OR
// Method Two
namespace XXX
{
#ifndef XXX_H
#define XXX_H
#include <iostream>
#include "myhead.h"
/...
#endif
}
Run Code Online (Sandbox Code Playgroud)
当我们定义一个新的时namespace XXX,我们应该#include directive在命名空间内移动吗?
谢谢
您不能包含<iostream>在命名空间内.您将收到链接器错误.
我不建议在命名空间中包含任何标头.
唯一的例外是你有一个只定义extern "C"函数(没有C++函数或类)的头文件,你通常可以在命名空间中包含它而不会导致链接器问题.但它仍然可能不是一个好主意.