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

Fortran Discussion :

Structure en argument d'une routine


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut Structure en argument d'une routine
    Bonjour,
    je débute en Fortran et cherche à faire un programme (simple) pour utiliser une structure comme argument d'une routine...

    J'ai créé une structure simple (Personne --> nom/age) et une routine pour en afficher les informations...

    Voici mon code :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    --------------------------------------------------------------
    program struct
     
    implicit none
     
    type personne; sequence
    	integer :: age
    	character (len = 20) :: nom
    end type personne
     
     
    interface
     
    	subroutine afficher(acteur)
    		type (personne), intent(in) :: acteur
    	end subroutine afficher
     
    end interface
     
     
    type (personne) :: moi
     
    moi%age = 26
    moi%nom = "DonutMan"
     
    call afficher(moi)
     
    end
     
     
     
    subroutine afficher(acteur)
    implicit none
     
    type personne; sequence
    	integer :: age
    	character (len = 20) :: nom
    end type personne
     
    type (personne), intent(in) :: acteur
     
    print *,'>>>   Personne   <<<'
    print *, 'Nom : ', acteur%nom
    print *, 'Age : ', acteur%age
     
    end subroutine afficher
     
    --------------------------------------------------------------

    Or quand j'essaie de compiler ça, j'ai le message d'erreur suivant :

    In file struct.f90:16

    type (personne), intent(in) :: acteur
    1
    Error: the type of 'acteur' at (1) has not been declared within the interface
    Quelqu'un a-t-il une idée ?
    J'ai vu passer la notion de "module" pour simplifier l'utilisation de structures en argument, mais j'aurai aimé savoir pourquoi mon code est incorrect ?

    Merci d'avance !

    Donut

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    La raison pourquoi ça ne marche pas : Parce que l'interface n'a pas accès aux variables et types du programme. Tout est local dans une interface.

Discussions similaires

  1. mettre une structure comme argument d'une fonction
    Par lahyouness dans le forum C++
    Réponses: 2
    Dernier message: 25/11/2014, 16h08
  2. Structure comme argument d'une fonction
    Par lagas12 dans le forum MATLAB
    Réponses: 1
    Dernier message: 08/08/2012, 17h14
  3. Utiliser une structure comme argument d'une fonction
    Par guilermo dans le forum Débuter
    Réponses: 7
    Dernier message: 15/10/2009, 10h05
  4. Passer une structure en argument
    Par phoibe dans le forum C
    Réponses: 20
    Dernier message: 22/11/2007, 19h56
  5. Réponses: 10
    Dernier message: 18/05/2007, 12h47

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