结论: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,则链接报错
版权声明:本文为weixin_44843859原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。