У меня есть несколько массивов параметров с разными именами в модуле:
real*8, parameter :: para1(*) = [43.234, 34.0498, ...
real*8, parameter :: para2...
В подпрограмме в этом модуле
subroutine sub(n,...
...
end
Я хочу использовать para1
, когда n=1
, para2
, когда n=2
и т. д. Есть несколько решений для этого, одно из них - создать массив paras=[para1,para2...] и правильно индексировать, что работает нормально. Но я хочу попробовать использовать указатель
real*8, pointer :: ptr(:)
и назначать его разным массивам параметров в зависимости от n
, но проблема в том, что "PARAMETER attribute conflicts with TARGET attribute at (1)
". Если я удалю атрибут parameter
, процедура станет менее безопасной, и будет использоваться атрибут SAVE
.
Я что-то упустил или почему мы не можем объединить parameter
и target
? И есть ли хороший способ обойти это для этой цели?
target, protected
часть - чепуха. 06.06.2019