C++多个头文件中可以定义同名的namespace吗?

  • Post author:
  • Post category:其他




结论: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 版权协议,转载请附上原文出处链接和本声明。