结论:c++是支持在多个.h文件中定义同名的namespace的。
分两种情况测试:
1.两个.h文件中namespace名字相同,命名空间中成员名称无重复,那么他们会合并为一个命名空间,编译通过
2.两个.h文件中namespace名字相同,命名空间中成员名称有重复,那么程序会在链接时报错。因为连接器会检测到重复定义的变量
测试代码如下:
name_1.h
#pragma once
namespace test {
int func() {
return 0;
}
}
name_2.h
#pragma once
namespace test {
int func1() {
return 0;
}
}
main.cpp
#include<iostream>
#include"name_1.h"
#include"name_2.h"
using namespace std;
int main() {
test::func();
test::func1();
return 0;
}
编译通过。
如果将name_2.h中的func1改为func,则链接报错