我们应该将#include移动到命名空间吗?

q09*_*987 1 c++

可能重复:
在命名空间块中包装#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在命名空间内移动吗?

谢谢

Ben*_*Ben 6

不能包含<iostream>在命名空间内.您将收到链接器错误.

我不建议在命名空间中包含任何标头.

唯一的例外是你有一个只定义extern "C"函数(没有C++函数或类)的头文件,你通常可以在命名空间中包含它而不会导致链接器问题.但它仍然可能不是一个好主意.