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 :

C++ arguments d'une fonction


Sujet :

C++

  1. #1
    Membre habitu�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 10
    Par d�faut C++ arguments d'une fonction
    Bonjour,
    voila j'ai fait une petite modif ds un test d'un code de calcul, ce test utlise une viscosit� _mu et le but de ma modification est d'utiliser deux viscosit�s _mu1 et _mu2;
    � la ligne 288 de NavierStokesSolverPC.hpp le code utlise la fonction stiff qui va la chercher dans elemOper.hpp (ligne 953) et elemOper.cpp (ligne 60), dans ces deux fichiers j'ai modifi� les arguments de la fonction stiff ainsi dans NavierStokesSolverPC.hpp. quand je lance le test j'ai une erreur:


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    main.o(.gnu.linkonce.t._ZN5LifeV20NavierStokesSolverPCINS_12RegionMesh3DINS_11LinearTetraENS_12MarkerCommonINS_17MarkerTraits_BaseEEEEEEC1ERK6GetPotRKNS_5RefFEESD_RKNS_8QuadRuleESG_SG_SG_RNS_9BCHandlerERKi+0xcb1): In function `LifeV::NavierStokesSolverPC<LifeV::RegionMesh3D<LifeV::LinearTetra, LifeV::MarkerCommon<LifeV::MarkerTraits_Base> > >::NavierStokesSolverPC(GetPot const&, LifeV::RefFE const&, LifeV::RefFE const&, LifeV::QuadRule const&, LifeV::QuadRule const&, LifeV::QuadRule const&, LifeV::QuadRule const&, LifeV::BCHandler&, int const&)':
    : undefined reference to `LifeV::stiff(double, double, LifeV::ElemMat&, LifeV::CurrentFE const&, int, int, int)'
    collect2: ld returned 1 exit status
    make[1]: *** [test_ns_cyl] Erreur 1

    elemOper.cpp : http://cjoint.com/?kznXnogUDJ
    Avez vous une ide� sur la nature de l'erreur
    Fichiers attach�s Fichiers attach�s

  2. #2
    Membre Expert Avatar de zooro
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activit� : D�veloppeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par d�faut
    Bonjour,

    Oui, aucun prototype compatible de la fonction LifeV::stiff n'a �t� trouv�.
    Soit la fonction n'existe pas ou n'est pas visible de l'endroit o� elle est appel�e, soit les arguments utilis�s � l'appel ne correspondent pas aux arguments des prototypes d�clar�s pour la fonction.

    PS: en utilisant la balise CODE lors de la r�daction de ton post, tu aurais simplifi� sa lecture. Peut-�tre que plus de personnes auraient pris le temps de lire ton message

  3. #3
    Membre habitu�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 10
    Par d�faut
    voila j'ai pas vu la balise code
    sinon je suppose que c'est les arguments utilis�s � l'appel qui ne correspondent pas aux arguments d�clar�s pour stiff. peux tu m'eclairer un peu plus sur ce point parceque jene vois pas du tout parceque a l'appel de stiff il y a bien deux coefficients mu1 et mu2 et idem pour ceux declar�s dans stiff.

  4. #4
    Membre Expert Avatar de zooro
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activit� : D�veloppeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par d�faut
    D�finition de la fonction :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    void stiff( Real coef1, Real coef2, ElemMat& elmat, const CurrentFE& fe,
                int iblock, int jblock, int nb )
    Appel de la fonction avec :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    LifeV::stiff(double, double, LifeV::ElemMat&, LifeV::CurrentFE const&,
                int, int, int)
    Donc d�j�, il veut des "Real" et tu lui donnes des "double".

  5. #5
    Membre habitu�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 10
    Par d�faut
    Oui c'est ce que je me suis dit au d�but ca saute aux yuex mais avant ma modif,
    c'�tait � l'appel :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    void stiff( Real coef, ElemMat& elmat, const CurrentFE& fe,
     int iblock, int jblock, int nb )
    et ca marchait parfaitement

  6. #6
    Membre Expert Avatar de zooro
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activit� : D�veloppeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par d�faut
    Citation Envoy� par bisontin
    Oui c'est ce que je me suis dit au d�but ca saute aux yuex mais avant ma modif,
    c'�tait � l'appel :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    void stiff( Real coef, ElemMat& elmat, const CurrentFE& fe,
     int iblock, int jblock, int nb )
    et ca marchait parfaitement
    Bizarre.
    Deux solutions simples :
    - soit tu forces le cast des double en Real (si �a marchait avant ta modif, �a doit �tre possible);
    - soit tu ajoutes un prototype avec des doubles � la place des Real.

  7. #7
    Membre habitu�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 10
    Par d�faut
    oulla oulla,
    et qu'est ce que ca veut dire tout ca , je n'ai pas de formation programmation
    merci zooro

  8. #8
    Membre habitu�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 10
    Par d�faut
    en fait je voulais ajouter une information que moi me semblait ne peut pas etre la cause de mon souci: en fait il y a bcp de test dans ce code et vraisemblablement il y en a plein qui vont chercher la fonction stiff et dans cet appel stiff d�pend d'un seul coef, donc moi qd j'ai compil� le code j'ai fait un make -k pour eviter qu'il ne s'arrete a cause de ca, donc au bout de ce make, le code va creer des excecutables que le test sur lequel je bosse va aller les chercher.
    Question: est ce que j'aurai du modifier tt les fichiers qui appellent stiff ?
    Merci

  9. #9
    Membre Expert Avatar de zooro
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activit� : D�veloppeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par d�faut
    Citation Envoy� par bisontin
    oulla oulla,
    et qu'est ce que ca veut dire tout ca , je n'ai pas de formation programmation
    merci zooro
    En gros, un cast, c'est un moyen de dire au compilateur : tu vois ce double, l�, ben c'est pas un double, c'est un Real ! Il faut faire attention de ne pas l'utiliser n'importe comment, mais �a peut aider � forcer la main au compilateur dans certains cas.

    L'autre solution, c'est de copier la fonction que tu as modifi�e/ajout�e, en rempla�ant dans sa d�claration les "Real coef1" et "Real coef2" par des "double coef1" et "double coef2". Il y aura peut-�tre des adaptations � faire dans le code de la fonction.

  10. #10
    Membre Expert Avatar de zooro
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activit� : D�veloppeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par d�faut
    Citation Envoy� par bisontin
    en fait je voulais ajouter une information que moi me semblait ne peut pas etre la cause de mon souci: en fait il y a bcp de test dans ce code et vraisemblablement il y en a plein qui vont chercher la fonction stiff et dans cet appel stiff d�pend d'un seul coef, donc moi qd j'ai compil� le code j'ai fait un make -k pour eviter qu'il ne s'arrete a cause de ca, donc au bout de ce make, le code va creer des excecutables que le test sur lequel je bosse va aller les chercher.
    Question: est ce que j'aurai du modifier tt les fichiers qui appellent stiff ?
    Merci
    Tu as modifi� la fonction stiff, ou tu en as cr�� une deuxi�me ?

    Si tu as ajout� une fonction avec un deuxi�me param�tre, l'ancienne existe toujours, et il n'est pas utile de modifier les autres appels.

    Par contre, si tu as modifi� la fonction stiff, en ajoutant un param�tre, tu n'as pas le choix. Il n'existe plus qu'une seule fonction stiff, et tu es oblig� de mettre � jour tous les appels � cette fonction.

  11. #11
    Membre habitu�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 10
    Par d�faut
    Citation Envoy� par zooro
    Tu as modifi� la fonction stiff, ou tu en as cr�� une deuxi�me ?

    Si tu as ajout� une fonction avec un deuxi�me param�tre, l'ancienne existe toujours, et il n'est pas utile de modifier les autres appels.

    Par contre, si tu as modifi� la fonction stiff, en ajoutant un param�tre, tu n'as pas le choix. Il n'existe plus qu'une seule fonction stiff, et tu es oblig� de mettre � jour tous les appels � cette fonction.
    au fait moi j'ai ajout� un deuxieme param�tre � la m�me fonction et qu'est ce que tu me conseille:

    -Ajouter un deuxi�me parametre dans la meme fonction et faire cette modification partout dans le code ( dans les fichiers o� elle est appl�e).

    -ajouter une autre fonction.

  12. #12
    Membre Expert Avatar de zooro
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activit� : D�veloppeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par d�faut
    Citation Envoy� par bisontin
    au fait moi j'ai ajout� un deuxieme param�tre � la m�me fonction et qu'est ce que tu me conseille:
    -Ajouter un deuxi�me parametre dans la meme fonction et faire cette modification partout dans le code ( dans les fichiers o� elle est appl�e).
    -ajouter une autre fonction.
    Ajouter une nouvelle fonction est plus simple. En plus, tu n'as pas � retester tout ton code puisque l'existant n'a pas chang�.

    Par contre, peut-�tre que le deuxi�me param�tre est indispensable pour le calcul, et que l'ancienne fonction DOIT �tre remplac�e, c'est � toi de d�cider (je n'en sais pas assez pour le faire � ta place).

  13. #13
    Membre habitu�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 10
    Par d�faut
    merci zooro ca marche maintenant
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    void stiff_visc( Real coef1, Real coef2, ElemMat& elmat, 
    const CurrentFE& fe, int iblock, int jblock, int nb )
    et bien sur dans les autres fichiers

    ca parrait tellemnt simple mais c'est ce que fait la diff�rence entre toi et moi (un pro dans la programmation et un pas )

    bon je pr�f�re ne pas mettre ce sujet � RESOLU parceque je vais en avoir besoin d'aide
    Merci encore Zooro

Discussions similaires

  1. [VBA-E] Lister les arguments d'une fonction
    Par laloune dans le forum Macros et VBA Excel
    R�ponses: 3
    Dernier message: 26/02/2006, 12h04
  2. R�cup�ration d'arguments sur une fonction
    Par p0Kep0K dans le forum G�n�ral JavaScript
    R�ponses: 8
    Dernier message: 21/09/2005, 09h17
  3. premier argument d'une fonction
    Par Ickou dans le forum Langage
    R�ponses: 3
    Dernier message: 10/09/2005, 14h17
  4. une url comme argument d'une fonction
    Par khayyam90 dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 18/10/2004, 20h15
  5. passer FILE* en argument d une fonction
    Par Monsieur_Manu dans le forum C
    R�ponses: 9
    Dernier message: 10/04/2003, 17h56

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