移植C++ - 从Windows到Unix的代码:systemcalls与函数名称冲突

mar*_*n2k 1 c++ namespaces system-calls

我正在将一些狡猾的C++ Windows代码移植到Linux上,它在每个类中都使用了"open"和"close"的功能......非常糟糕的风格,还是?幸运的是,这不是Windows中的问题,因为他们的系统调用被命名为不同.

当我尝试调用systemcalls open()或close()时,我收到一些关于"没有匹配函数调用class:open()"的编译器错误.我不能在整个代码中重命名所有名为"class :: open"和"class :: close"的函数,我必须使用open()和close(),因为我正在使用串行端口.

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

ken*_*ytm 7

您可以使用它::open来引用open全局命名空间.