Я хотел бы имитировать C-код в простом проекте на Фортране, где я бы #define
использовал некоторые макросы и использовал их в своем коде.
Например, модуль животных мог бы выглядеть следующим образом:
#define timestwo(x) (2 * (x))
module animal_module
implicit none
! ...
! test
procedure :: answer
! ...
function answer(this) result(n)
class(animal), intent(in) :: this
integer :: n
n = timestwo(42)
end function answer
end module animal_module
Если я использую макрос в модуле, как вы можете видеть, у меня нет ошибок, и он работает просто отлично.
Однако использование этого макроса в основном файле неработать вообще:
program oo
use animal_module
implicit none
print *, 'the macro ', timestwo(5)
end program
С компилятором, жалующимся на макрос:
main.F90(21): error #6404: This name does not have a type, and must have an explicit type. [TIMESTWO]
print *, 'the macro ', timestwo(5)
Чего мне не хватает?