Question

Je fais une plate-forme très simple application de la console indépendante (au moins c'est le plan). J'ai changé de conio.h à PDCURSES pour y arriver. Le problème avec cela est que dans Windows, en utilisant Codeblocks et gcc j'ai un problème.

Quand je reçois des tonnes inclus je d'erreurs. Elles concernent toutes 3 macros toutes situées dans la source différents fichiers à l'intérieur:

CodeBlocks \ MinGW \ bin .. \ lib \ gcc \ mingw32 \ 3.4.5 ........ \ include \ c ++ \ 3.4.5 \ bits de \

Si je FNUD ces 3 macros comme ceci:

#include <curses.h>


#undef move
#undef erase
#undef clear

puis tout bien compile. Si je ne FNUD je reçois des tonnes d'erreurs sur ces macros.

erreurs d'exemple sont:

macro "move" passed 3 arguments, but takes just 2|
\bits\char_traits.h|185|error: invalid function declaration|
\bits\basic_string.h|604|error: expected `)' before '->' token|
\bits\basic_string.h|1039|macro "erase" passed 2 arguments, but takes just 0|

Quelqu'un a une idée pourquoi cela se produit? Et aucune façon pas si sacrément laid pour corriger le problème? Merci d'avance pour votre entrée.

Edit: Je suis également obtenir des références non définies à diverses choses chaque fois que j'invoque toutes les fonctions de PDCURSES. Je ne comprends pas pourquoi. Je certainement lié la bibliothèque correctement. Par exemple en essayant d'écho char à l'écran que je reçois:

main.cpp|74|undefined reference to `__imp__SP'|
main.cpp|74|undefined reference to `__imp__stdscr'|
main.cpp|74|undefined reference to `__imp__stdscr'|

Peut-il être autre chose que la mauvaise liaison de la bibliothèque? Et comment puis-je voir ce qui ne va pas avec l'enchaînement des PDCURSES fromthe ci-dessus erreurs?

-Lefteris

Était-ce utile?

La solution

Pour le problème macro, effectuez une recherche pour « STL » dans le fichier curses.h et vous devez trouver:

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

#endif /* NCURSES_NOMACROS */

Peut-être que vous pouvez trouver un travail avec ça.

EDIT: Dans ma copie si un #define NCURSES_NOMACROS il sautera définir toutes les macros. Pour autant que je regardais tous ne sont que des macros de commodité pour l'écran standard de sorte que vous ne perdez vraiment aucune fonctionnalité mais vous devez utiliser les fonctions qui nécessitent explicitement la variable d'écran. Ou bien, je suppose, utiliser vos propres macros qui n'ont pas des conflits de noms.

Autres conseils

A. Je ne sais pas pourquoi le problème est là (il ne se produit pas avec MSVC PDCURSES), mais la « bonne façon » est de mettre en œuvre votre propre tête qui a les directives correctes et prévoient notamment la place.

B. On dirait une erreur de me lier, mais pourquoi ne pas vous montrer le code correspondant?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top