J'ai un sous-programme Fortran qui attend un ensemble complexe commePasser un vrai tableau si un ensemble complexe devrait
subroutine foo(cnumbers, n)
integer :: n
complex :: cnumbers(n)
...
end subroutine foo
et plus tard, je veux l'appeler comme
real :: rnumbers(40)
...
call foo(rnumbers, 20)
Cependant, je reçois l'erreur du compilateur:
error #6633: The type of the actual argument differs from the type of the dummy argument.
Bien sûr, cela est compréhensible car un tableau réel n'est pas un ensemble complexe. Mais il doit y avoir un moyen de le faire fonctionner.
Parce que si le sous-programme foo
et l'appel de foo
sont différents modules et sont écrits dans différents fichiers Fortran, le compilateur ne pas se plaindre, et tout fonctionne très bien.
Est-ce que quelqu'un sait comment le faire fonctionner? Comment passer un tableau réel si un tableau complexe est attendu?
Vous devriez afficher plus de code du côté appelant. Si 'rnumbers' n'est pas un argument fictif, vous pouvez simplement l'équivalencer avec un tableau complexe. –
Non, 'rnumbers' n'est pas dummy, c'est une variable réelle que je crée avec' real :: rnumbers (40) '. En passant, j'utilise le compilateur Intel Fortran 15.0.3. – thyme
si votre sous-programme était externe (aucune interface explicite) votre compilateur ne détecterait pas le problème de type et cela fonctionnerait bien. – agentp