2010-03-24 77 views
1

我将一些Crucible C++ Windows代码移植到Linux,它在每个类中使用称为“open”和“close”的函数......非常糟糕风格还是?幸运的是,这在Windows中不是问题,因为它们的系统调用名称不同。当我尝试调用systemcalls open()或close()时,我得到了一些有关“没有匹配函数调用类:open()”的编译器错误。我不能在整个代码中重新命名我们所有名为“class :: open”和“class :: close”的函数,而且我必须使用open()和close(),因为我正在使用串行端口。移植C++ - 代码从Windows到Unix:systemcalls与函数名冲突

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

+0

您在Linux上使用哪种编译器? – 2010-03-24 12:20:28

+0

gcc版本4.4.1 – marvin2k 2010-03-24 12:25:16

回答

7

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

+0

谢谢!你在哪里,第一,所以我正在标记你的答案 - 但这是一场亲密的比赛! – marvin2k 2010-03-24 12:24:18

1

您可以使用示波器分辨率运算符来指示全局变体::open::close

1

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