какой размер общего?Fortran77 - PullRequest
0 голосов
/ 17 декабря 2018

У меня проблема в том, как узнать размер одного и того же «общего», который находится в другой подпрограмме?

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

1 Ответ

0 голосов
/ 17 декабря 2018

Размер здесь - это размер переменных, хранящихся в общем блоке.В вашем случае это размер массива (a или b).Массив не имеет одинаковый размер в этих двух подпрограммах.Это не разрешено, и компилятор выдает предупреждение.Это предупреждение, а не ошибка, и вы можете игнорировать его.Код, вероятно, будет работать хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...