g++ erreur: ‘stricmp’ n'a pas été déclarée dans ce cadre (mais OK pour "strcmp')

Je suis en train de compiler le suit de très très simple morceau de code source:

#include <cstring>
//#include <string.h>
//using namespace std;

class Helper {
public:
    int cStringsAreEqual(const char *s1, const char *s2) {
        return stricmp(s1, s2);
    }
};

... mais j'obtiens le message d'erreur suivant:

   g++ error: stricmp was not declared in this scope

Cependant quand j'utilise strcmp() au lieu de stricmp() alors tout va bien!

Quel est le problème ici? Ne devrait pas stricmp() est autorisé que lorsque strcmp() est-elle autorisée?

Sureley, tout cela pourrait être écrit beaucoup mieux sans utiliser strcmp/stricmp.

Mais ce n'est pas le point ici.

Je suis portage d'un morceau de logiciel qui fait une large part à des appels à stricmp(). Et si possible j'aimerais éviter tous les efforts nécessaires pour changer tous les appels à stricmp.

Toute aide sur ce serait très apprécié!

BTW: j'utilise Ubuntu karmic OS (v9.10) avec g++ v4.4.1.

BTW: comme vous pouvez le voir j'ai aussi fait quelques essais avec " #include string.h' ou avec 'namespace std", mais rien n'a aidé.

  • Considérant que stricmp et strcmp ne sont pas les mêmes (ce dernier est sensible à la casse), vous pouvez hésitez avant de les changer de toute façon.
  • Je sais qu'ils ne sont pas les mêmes. C'est pourquoi je veux utiliser stricmp et pas strcmp
  • Notez également que <string.h> et <cstring> ne sont pas exactement les certains. Ce n'est pas la cause de votre problème, mais vous aurez besoin d'écrire std::strcmp (ou std::strcoll) plutôt que de supposer que les noms sont importés dans l'espace de noms global.
InformationsquelleAutor | 2009-11-23