Как использовать структуры с указателями в Фортране, как в C ++? - PullRequest
2 голосов
/ 09 июля 2019

Я использую C ++ в течение нескольких лет. Тогда я решил использовать Fortran для лучшей математической производительности. В C ++ у меня есть следующая структура, которую я использую везде:

structure     BitMap{
char*     rgba;         // pointer to the color array
int       w, h;};       // dimension of my bitmap

В Фортране, с другой стороны:

Program Bitmap_p
implicit none
type BitMap
character :: rgba(*) ! like a pointer to bitmap array (colors and alpha)
integer:: w  ! bitmap width
integer:: h  ! bitmap height
endtype BitMap
endprogram Bitmap_p

Однако, при компиляции, компилятор заявляет:

  1. f90 (4): ошибка # 6530: спецификация массива для этого компонента должна иметь явную форму, и каждая граница должна быть выражением инициализации. [RGBA]

1 Ответ

1 голос
/ 09 июля 2019

Вы должны иметь возможность использовать TYPE и POINTER в Фортране, чтобы делать то, что вы можете делать с struct и * в С.

Program Bitmap_p
implicit none
type BitMap
character, pointer :: rgba(:) ! like a pointer to bitmap array (colors and alpha)
integer:: w  ! bitmap width
integer:: h  ! bitmap height
endtype BitMap

type(BitMap) :: bmap

bmap%w = 10
bmap%h = 10
allocate( bmap%rgba(4*bmap%w*bmap%h) )

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