C++ 中的命名空间如何 link?

namespace in C++ how to link?

我的代码结构如下:

file1.cpp

namespace file1
{
  ...
  ...
}
int main()
{
  file2::func();
}

file2.cpp

namespace file2
{
     ...
     ...
}

我 link file1.cpp 和 file2.cpp 会怎样?它抛出 file1.cpp 找不到 file2 namespace 的错误。我尝试在 file1.cpp 中添加 namespace file2{},但仍然出现相同的错误。

您需要 header 来声明要从多个源文件访问的内容:

// file2.h
#pragma once  // or a traditional include guard if you prefer

namespace file2 {
    void func();
}

现在从 file1.cpp 中包含此内容,以便从那里使用 file2::func

// file1.cpp
#include "file1.h"

// ...