在C/ c++中,当两个函数具有相同的名称,一个函数调用另一个函数时,它将工作
in C/C++, it is going to work when two function has same name, one end up call another
我遇到了这个问题,函数F需要调用函数A,而函数A调用了一个恰好与F同名的第三方函数
的例子:
sendData()
{
...
socket(p1, p2, p3) // intention is to call version 1
}
socket(p, p2, p3) // this is version 1
{
...
xScoket(...);
...
}
xSocket(...) // in separate file
{
...
socket(p1, p2, p3); // intention is to call version 2
// from third party
}
socket(...) // this is version 2 from third party in separate file
{
...
}
我考虑过使用名称空间,但后来它认为名称空间用于定义两个版本的函数,而不是一个调用另一个。我说的对吗?
我考虑使用#define如下版本1,并希望预处理器将替换版本1套接字与socketUnique,以避免编译器/链接器抱怨重复的错误。但是当我运行测试时,它不起作用——调试毫无意义地跳转。所以,我又想了一下,#define也可以替换版本2(来自第三方代码)。
#define socket socketUnique
所以,我把这个问题贴在这里,希望听到一些建议——要么是可行的,要么是不可能的。
谢谢
如果函数位于单独的文件中(并且不需要从其他源文件中调用),那么最简单的解决方案是使函数static
至少位于两个位置中的一个。
如果你需要从多个源文件中调用函数(因此static
不起作用),我会重命名"你的"函数(s),而不是依赖宏-使用宏会使代码很难阅读,它肯定会对任何"源导航工具"(cscope等)造成破坏
相关文章:
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++中的memset函数工作不正常
- 渲染窗口无法跨多个函数工作
- C++:最大数组值函数工作不正常
- 仅一个功能的链接错误.在同一类和CPP文件中具有相似签名的其他函数工作正常
- 如何让我的构造函数和函数工作,以便我的 main() 能够同时显示字符串和 int 数据
- (c++)无法让 void 函数工作,主.cpp内部的几行也有问题
- 编译器生成的默认构造函数工作 - C++
- 我似乎无法让我的最大长度递归函数工作
- 无法让 SHGetKnownFolderPath() 函数工作
- Qt 5.2无法使qWait函数工作
- 模板作为递归函数工作
- 构造函数工作不正常
- 如何让c风格的字符串函数工作
- 我如何让这个构造函数工作
- C函数工作,c++版本不
- 为什么我的衍生自CRTP函数工作
- 不明白为什么这个C++递归函数工作背后的逻辑
- 对不存在的对象调用成员函数工作正常,c++
- 如何使 cv::setMouseCallback 函数工作