如何避免C中两个库的变量/函数冲突

前端之家收集整理的这篇文章主要介绍了如何避免C中两个库的变量/函数冲突前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有类似的情况,如下所述:

我有一个头文件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文件,并使用上面的代码.

原文链接:https://www.f2er.com/c/110884.html

猜你在找的C&C++相关文章