Forum Programmation.c ltoa : n'a pas été déclaré dans cet horizon.

Posté par  .
Étiquettes : aucune
0
12
mai
2006
Bonjour,

Voilà je dois compiler un ensemble de programme C sous Linux (qui ont déjà été compilé sous HP-UX avec succès) mais lors de la compilation j'obtiens l'erreur suivante à chaque fois que j'utilise la fonction ltoa :
erreur: « ltoa » n'a pas ete declare dans cet horizon

Je ne trouve pas grand chose sur les forums.
Si quelqu'un peut m'aider.
Merci d'avance.
  • # re

    Posté par  . Évalué à 2.

    Déja, un bon début serait de faire parler gcc dans sa langue natale, parce que bon, les erreurs de compilo en anglais sont un poil imbitable :)

    En gros, ce que ce brave gcc essaye de te dire, c'est qu'il ne connait pas de fonction nommée ltoa ... et pour cause, cette fonction n'existe effectivement pas sous linux:

    [gco@gc]:~% man ltoa
    No manual entry for ltoa

    A il ne te reste donc plus qu'à contourner ce problème (sprintf, etc...)
    • [^] # Re: re

      Posté par  . Évalué à 1.

      Déja, un bon début serait de faire parler gcc dans sa langue natale, parce que bon, les erreurs de compilo en anglais sont un poil imbitable :)


      Qu'est-ce que tu veux dire ? « erreur: « ltoa » n'a pas ete declare dans cet horizon », c'est du français, pas de l'anglais...

      Où alors, est-ce que tu voudrais insinuer qu'il faut laisser gcc parler dans sa langue à lui, gcc, c'est à dire l'anglais, parce que les traductions des messages d'erreur seraient mauvaises ?
      • [^] # Re: re

        Posté par  . Évalué à 2.

        Oui, je voulais dire qu'il fallait laisser gcc parler en anglais. Les traductions ne sont pas "mauvaises", elles sont simplement beaucoup moins parlantes qu'en VO.
        • [^] # Re: re

          Posté par  . Évalué à 1.

          « « ltoa » n'a pas ete declare dans cet horizon », je ne trouve pas ça moins parlant que « "itoa" was not declared in this scope ». Bon, c'est vrai que la première fois que j'ai lu « erreur de segmentation » ça m'a un peu surpris.

          Ceci dit, actuellement sur ma Slackware, en console, je dois avoir LANG="C"... mais de là à recommander de ne pas utiliser les traductions, non !
          • [^] # Re: re

            Posté par  . Évalué à 1.

            y a matière à troller là :)

            Le problème de fonctionner avec les versions localisées des softs, c'est que face à une erreur, 'on se retrouve souvent dans le cas :
            "Je ne trouve pas grand chose sur les forums."

            surtout pour les erreurs un peu "exotiques".

            Je tire mon chapeau à Oracle là dessus. Ca doit être bien lourdingue de se cogner la maintenance d'une liste de code d'erreurs, mais faut reconnaitre que ça simplifie les recherches sur le net.
  • # ansi

    Posté par  . Évalué à 1.

    Il me semble que itoa n'est pas un fonction C ANSI, ce qui expliquerait son absence.
    • [^] # Re: ansi

      Posté par  . Évalué à 1.

      Merci pour vos réponses.
      Je confirme que ltoa n'est pas une fonction C ANSI.
      Comment est ce qu'on peut faire pour changer la langue de gcc? Est ce lié à la langue de l'OS?
      • [^] # Re: ansi

        Posté par  (site web personnel) . Évalué à 2.

        Tu n'as qu'a écrire un faux Itoa qui utilise sprintf.

        Un OS n'a pas de langue, c'est la librairie standarde qui est différente.

        Tu peux améliorer la portabilité de ton code, en utilisant des #define et #ifdef, ou tout simplement en utilisant les librairies standardes.

        Adhérer à l'April, ça vous tente ?

        • [^] # Re: ansi

          Posté par  . Évalué à 2.

          Pour changer la langue des messages d'erreur de gcc, il faut changer les locales.
          export LC_ALL=C devrait faire l'affaire.
        • [^] # Re: ansi

          Posté par  . Évalué à 0.

          Pas forcément besoin de sprintf() si tu veux juste travailler en base 10; mais il est vrai qu'il est préférable de réutiliser la bibliothèque standard dès que possible (on perd (peut-être) un peu en perf ce qu'on gagne (sûrement) en robustesse).
          Pour éviter les débordements de tampon, tu peux aussi utiliser snprintf() (ou faire un malloc() de la bonne taille).

          Sinon, si tu aimes réinventer la roue: http://mail.gnome.org/archives/gtk-app-devel-list/2004-Septe(...)
          ou http://www.jb.man.ac.uk/~slowe/cpp/itoa.html

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.