IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

short long ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 496
    Billets dans le blog
    1
    Par défaut short long ?
    Bonsoir,

    Je suis en train de tenter de faire compiler (sans linker) avec gcc / llvm du code pour PIC. Mon intérêt est d'éviter les messages d'erreur à la mord moi le noeud du compilateur C18 pour PIC et j'espère avoir des messages d'erreur plus compréhensibles. En gros, j'essaye de faire ce qui m'a été conseillé dans les commentaires de cet article : http://gradot.wordpress.com/2013/11/...t-pas-un-type/

    J'ai passé les premières difficultés en récupérant les headers, trouvant le define pour que les inclusions marchent puis j'ai contourné les mot-clés near et far. Maintenant j'arrive sur la ligne suivante qui me laisse perplexe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern volatile near unsigned short long PC;
    gcc est comme vous et moi :
    ./p18f25k22.h:2759: error: both ‘long’ and ‘short’ in declaration specifiers


    Quelqu'un a déjà vu un truc comme ça ? Quelqu'un a t-il surtout une idée de comment remplacer ce type par un type plus "commun" ?

    Bktero

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 496
    Par défaut
    Hello,

    C'est un « entier au long court » ?

    Plus sérieusement, je n'ai jamais vu cela non plus. Pas de trace dans n1256 non plus (après une simple recherche sur « long short » et « short long » sans creuser plus loin. Par contre, après une recherche sur Google, on tombe systématiquement sur les pages consacrées à Microchip, et notamment celle-ci : http://www.microchip.com/forums/m738383.aspx

    Apparemment, c'est une manière pour eux de déclarer des entiers de 24 bits. « uint24_t » était probablement trop compliqué…

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 496
    Billets dans le blog
    1
    Par défaut
    Je viens de chercher dans la documentation du compilateur C18 :
    2.1 DATA TYPES AND LIMITS 2.1.1 Integer Types
    The MPLAB C18 compiler supports the standard ANSI-defined integer types. The ranges of the standard integer types are documented in Table 2-1. In addition, MPLAB C18 supports a 24-bit integer type short long int (or long short int), in both a signed and unsigned variety.
    C'est donc effectivement (u)int24_t.

    Je ne vois pas de moyen de faire un typedef ou une macro en C pour remplacer ça. Le premier me donne me même message d'erreur que ci-dessus ; le second marche pas puisque short long, ça fait deux mots.

    sed ?

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 496
    Par défaut
    Citation Envoyé par Bktero Voir le message
    sed ?
    Oui, mais à condition que les séquences « long short » ou « short long » n'apparaissent jamais ailleurs que dans les déclarations de types, notamment au sein des chaînes de caractères (peu probable quand même) ni au sein des commentaires (sauf à vouloir les remplacer également pour maintenir la cohérence de la doc).

    Jouable, mais bien pénible quand même. Je te conseille de faire un egrep récursif avec numéros de lignes sur ces deux expressions (en mettant [[:space:]]* entre les deux mots) et de renvoyer la sortie dans un fichier que liras à tête reposée. En quelques coups d'œil, tu devrais pouvoir vérifier facilement s'il s'agit toujours de déclarations ou s'il y a des cas particuliers.

    Et dans le premier cas, tu peux faire un « sed -i » pour modifier directement les fichiers après en avoir fait une sauvegarde globale.

  5. #5
    Membre très actif

    Femme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    594
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 594
    Par défaut
    Je suis en train de tenter de faire compiler (sans linker) avec gcc / llvm du code pour PIC
    Bon Courage!!
    Le C Microship, c'est du C a la sauce Microship, c'est à dire non standard

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Le probleme que je vois, c'est que comme tu as du C non standard, ce n'est que la premiere difficulte que tu rencontres, mais tu ne sais pas combien d'autres t'attendent.

    Que cherches-tu a faire ? Compiler les sources avec GCC pour linker ensuite avec le linker C microship ? Si c'est bien le cas, le fait de remplacer "short long" par autre chose peut entrainer des bugs. Si c'est autre chose, alors il faudrait savoir ce que tu veux faire pour te conseiller.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/02/2006, 17h52
  2. Arrêter un prog si temps de connexion trop long
    Par jakouz dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2002, 18h28
  3. convertir un nom long (win32) en format dos (8+3)
    Par kylekiller dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2002, 13h34
  4. String -> long double (_strlold ?)
    Par haypo dans le forum C
    Réponses: 7
    Dernier message: 25/07/2002, 20h22
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo