我有一个问题,如何知道在不同子程序中相同的“ common”的大小?
program hello
end program Hello
subroutine test()
real::a(10,10)
common /ttt/ a
end
subroutine test2()
real::b(10,20)
common /ttt/ b
end
我只是得到编译器的信息。但是我不知道'/ ttt /'中的最终大小吗?
$gfortran -std=f95 *.f95 -o main
main.f95:13:16:
common /ttt/ b
1
Warning: Named COMMON block ‘ttt’ at (1) shall be of the same size as elsewhere (800 vs 400 bytes)
$main
答案 0 :(得分:1)
此处的大小是存储在公共块中的变量的大小。在您的情况下,它是数组的大小(a
或b
)。在这两个子例程中,数组的大小不同。这是不允许的,编译器会发出警告。这是一个警告,而不是错误,您可以选择忽略它。该代码可能可以正常工作。