2

我正在将一些笨拙的 C++ Windows 代码移植到 Linux,它在每个类中使用称为“打开”和“关闭”的函数......非常糟糕的风格,或者?幸运的是,这在 Windows 中不是问题,因为它们的系统调用名称不同。

当我尝试调用系统调用 open() 或 close() 时,我收到一些关于“类调用没有匹配函数:open()”的编译器错误。我无法在整个代码中重命名所有名为“class::open”和“class::close”的函数,而且我必须使用 open() 和 close(),因为我正在使用串行端口。

所以我的问题是:我怎样才能告诉编译器,我的意思是哪个打开?如何在 C++ 中转义或隐藏类的命名空间?

4

3 回答 3

8

您可以使用::open来引用open全局命名空间中的 。

于 2010-03-24T12:21:22.113 回答
1

您可以使用范围解析运算符来指示全局变体::open::close.

于 2010-03-24T12:21:46.560 回答
1

调用 ::open() 将调用全局函数——即系统调用。

于 2010-03-24T12:22:14.030 回答