Fortran을 배우고 있으며 나중에 사용할 수 있도록 모듈을 컴파일하려고합니다. 두 개의 번호를 요구하고 나는이가 메인 프로그램에서는모듈을 컴파일 할 때 'main'에 대한 정의되지 않은 참조
모듈에서 함수를 호출 : 내가 먼저 모듈을 컴파일 할 필요가 있기 때문에
가use exponentiate
integer::a,b
write *, 'A'
read *, 'a
write *, 'B'
read *, 'b
write *,expo(a,b)
(나는 그것을 밖으로 시도하지 않은, 그러나 그것은 문제가 아닙니다.)
그런 다음 다른 파일에이 코드가 있습니다.이 코드는 두 개의 숫자를 지수화하는 표준 모듈 일뿐입니다.
module exponentiate
interface test
module procedure expo
end interface
contains
function expo(a,b)
type(integer), intent(in)::a,b
type(integer) expo
integer::temp
temp=a
do i=1,b
temp=temp*a
end do
expo=temp
end function expo
end module exponentiate
저는 Fortran 95 사양을 읽을 수없고 거의 쓸모가 없기 때문에 컴파일러 오류를 기반으로 구문을 파악하려고 노력해 왔습니다. 저와 일부 Wikipedia/SO 도움말을 통해 몇 가지 사항을 파악할 수 있었지만이 컴파일러 오류가 왜 나타나는지 전혀 알지 못합니다.
일부 구문 문제 또는 gfortran의 오용으로 인한 것인지 확실하지 않으므로 도움을 받으실 수 있습니다.
와우, 예! 그게 효과가 있었어! 나는 다른 것들을 시도하고 gfortran 명령을 사용하여 모든 파일 (주 프로그램과 모듈 모두)을 컴파일하여 인수로 컴파일하고 문제없이 작업했습니다. 감사! 또 다른 질문입니다. 예를 들어 100 개의 모듈을 사용하는 프로그램을 어떻게 컴파일합니까? CLI에서 gfortran을 사용하면 문제가 커지지는 않습니다. –
"100 개의 파일"을 의미한다고 가정합니다. 일종의 빌드 자동화 소프트웨어를 사용합니다. – IanH