我正在从Visual Studio 6迁移到Visual Studio 2008,并且具有要使用的名为SetDefaultPrinter
的组件的功能。
不幸的是,现在有一个同名的Windows库函数SetDefaultPrinter
。与之关联的宏正在妨碍我使用我的函数。
这是我必须调用我的函数的解决方法:
#undef SetDefaultPrinter
pNova->SetDefaultPrinter();
#ifdef UNICODE
#define SetDefaultPrinter SetDefaultPrinterW
#else
#define SetDefaultPrinter SetDefaultPrinterA
#endif // !UNICODE
有没有一个比较丑陋的方法呢?不,我无法控制该外部组件来更改函数的名称。
最佳答案
这就是C ++添加名称空间的原因。太糟糕了,Windows定义无法使用它们。
在另一个不包含windows.h或任何其他Windows包含文件的源模块中,生成一个存根函数来调用您的冲突函数。
void MySetDefaultPrinter(CNova * pNova)
{
pNova->SetDefaultPrinter();
}
关于c++ - 预处理器忽略,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/912946/