如何避免C中两个库的变量/函数冲突
发布时间:2020-12-16 03:37:34 所属栏目:百科 来源:网络整理
导读:我有类似的情况,如下所述: 我有一个头文件first.h 它有一个功能: char* getName(); 和关联的cpp文件first.cpp具有函数定义 char* getName(){return "first";} 和第二个头文件second.h 它具有以下功能: char* getName(); 关联的cpp文件second.cpp具有函数
我有类似的情况,如下所述:
我有一个头文件first.h char* getName(); 和关联的cpp文件first.cpp具有函数定义 char* getName(){return "first";} 和第二个头文件second.h char* getName(); 关联的cpp文件second.cpp具有函数定义 char* getName(){return "second";} 现在有一个main()函数: #include "first.h" #include "second.h" int main(){ return 0; } 当我包含那些.h文件时,编译器会在函数getName()中给出错误,因为它是冲突的. 如何在不更改.h文件的情况下摆脱此问题 解决方法
包含这些头文件时可以使用名称空间:
在你的cpp文件中: namespace first { #include "first.h" } namespace second { #include "second.h" } 然后您可以使用以下功能: ... first::getName(); second::getName(); ... 编辑:感谢Jens的评论,只有函数是内联的才有效.如果函数不是内联的,并且您实际上无法更改头文件,则可以为这些函数创建“包装器”头文件: 文件包装器 – first.h: namespace first { char* getName(); } 文件wrapper-first.cpp: #include "wrapper-first.h" #include "first.h" char* first::getName() { return ::getName(); } …并为第二个头文件创建相同的内容.然后,您只需在您的cpp文件中包含wrpper-include文件,并使用上面的代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |