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 :

float passé par valeur/référence


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Points : 16
    Points
    16
    Par défaut float passé par valeur/référence
    Bonjour,

    Sous Centos 7.2, 64 bits, j'ai un problème curieux avec un float passé par valeur qui échoue dans une routine si elle est dans une unité de compilation extérieure et fonctionne si tout est dans le code.

    Exemple ci-dessous :
    - dans test.c, csub2 et csub3 sont dans le même code source, la valeur de float lors de l'appel à csub2 via csub3 est correcte (gcc -o test test.c)
    - dans ctests.c, qui ne contient que le prototype, la valeur du float lors de l'appel à csub2 via csub3 est incorrecte (gcc -o ctests ctests.c csub2.c csub3.c)

    Pourtant, j'ai copié/collé csub2 et csub3 dans le source de test.c!

    Ai-je manqué quelque chose ?

    J'ai mis les petits tests en pièce jointe.

    Merci pour l'aide,

    Alain
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Quelques conseils :
    1) Rajoute les options -Wall -Wextra quand tu compiles.
    2) Crée des *.h avec les prototypes et inclus ces fichiers là où tu utilises et là où tu définis les fonctions. Ainsi, il y aura des vérifications de prototypes ca t’évite de recopier avec des erreurs possibles tes prototypes (a priori, pas d'erreur dans ton code, j'ai vérifié ça avec une petit ligne bash [grep "int csub" *.c | cut -d':' -f2 | sort] pour extraire les prototypes et ça semble bon).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Trouvé : c'est juste que dans le code séparé, le prototype de csub2 n'est pas repris dans le module csub3.c.
    Ca passe à la compilation mais ça ne s'exécute pas correctement...
    C'était tout bête.

    Cdt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passage d'argument par valeur / référence
    Par ezrider dans le forum C#
    Réponses: 17
    Dernier message: 05/04/2013, 05h18
  2. this passé par valeur ?
    Par Sergejack dans le forum C#
    Réponses: 8
    Dernier message: 09/03/2009, 14h22
  3. Passage par référence et non pas par valeur
    Par GPZ{^_^} dans le forum Flash
    Réponses: 2
    Dernier message: 14/05/2007, 15h21
  4. Réponses: 4
    Dernier message: 19/03/2007, 17h12
  5. [POO] Problème de paramètre passé par référence
    Par dug dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2005, 20h29

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