C++ pdCurses在Windows中使用,与3个gcc宏一起使用

C++ pdCurses在Windows中使用,与3个gcc宏一起使用,c++,windows,pdcurses,C++,Windows,Pdcurses,我正在制作一个非常简单的独立于平台(至少这是计划)的控制台应用程序。我从conio.h改为pdCurses来实现它。问题是,在Windows中,使用代码块和gcc时,我遇到了一个问题 当我加入时,我会犯很多错误。它们都涉及3个宏,都位于不同的源文件中: 代码块\MinGW\bin..\lib\gcc\mingw32\3.4.5……。\include\c++\3.4.5\bits\ 如果我像这样取消定义这3个宏: #include <curses.h> #undef move #u

我正在制作一个非常简单的独立于平台(至少这是计划)的控制台应用程序。我从conio.h改为pdCurses来实现它。问题是,在Windows中,使用代码块和gcc时,我遇到了一个问题

当我加入时,我会犯很多错误。它们都涉及3个宏,都位于不同的源文件中:

代码块\MinGW\bin..\lib\gcc\mingw32\3.4.5……。\include\c++\3.4.5\bits\

如果我像这样取消定义这3个宏:

#include <curses.h>


#undef move
#undef erase
#undef clear
有人知道为什么会这样吗?还有什么不那么丑陋的方法来解决这个问题?提前感谢您的投入

编辑:每当调用任何pdcurses函数时,我也会得到对各种事物的未定义引用。我不明白为什么。我确实正确地链接了图书馆。例如,通过尝试在屏幕上回显字符,我得到:

main.cpp|74|undefined reference to `__imp__SP'|
main.cpp|74|undefined reference to `__imp__stdscr'|
main.cpp|74|undefined reference to `__imp__stdscr'|
除了图书馆的坏链接之外,还有什么别的原因吗?我如何从上面的错误中看出PDC课程链接的错误


-Lefteris

A.我不知道为什么会出现问题(在使用PDCurses的MSVC中不会发生这种情况),但“正确的方法”是实现自己的标题,其中包含正确的指令,并将其包含在内


看起来像是链接错误,但是为什么不显示相应的代码呢

对于宏问题,在curses.h文件中搜索“STL”,您会发现:

#ifdef __cplusplus
#ifndef NCURSES_NOMACROS
/* these names conflict with STL */
#undef box
#undef clear
#undef erase
#undef move
#undef refresh

#endif /* NCURSES_NOMACROS */
也许你能找到一份工作


编辑:在我的副本中,如果您定义NCURSES\u NOMACROS,它将跳过定义所有宏。据我所知,所有这些都只是标准屏幕的方便宏,因此不会丢失任何功能,但必须使用显式需要screen变量的函数。或者,我想,使用您自己的没有名称冲突的宏。

谢谢您的帮助,我将尝试这样做。对于B,是的,对我来说这看起来也是一个链接错误,但是我确实从代码块正确链接了库,就像我对其他库所做的一样。至于对应的代码,它可以是任何东西。任何pdcurses函数都将抛出此引用或类似的未定义引用。
#ifdef __cplusplus
#ifndef NCURSES_NOMACROS
/* these names conflict with STL */
#undef box
#undef clear
#undef erase
#undef move
#undef refresh

#endif /* NCURSES_NOMACROS */