Fortran から C API 関数を呼び出したいです。C 関数は、バイト配列を受け入れます。
void image(const void *bitmap, int w, int h);
ここで、連続する 3 バイトは*bitmapRGB カラー トリプルを表し、C のように解釈されます。Fortran でunsigned charビットマップを初期化し、C 内で描画を処理したいと考えています。Fortran での現在の定義は使用しています
integer*1 rgbImage(6,2)
たとえば、2x2 のイメージを初期化しますが、コンパイラは代入を受け入れません
rgbImage(1,1) = 255
赤い色を得るために。BYTE符号なしの 1 バイトに, UNSIGNED*1,を使用するというヒントを見たことがありLOGICAL*1ますが、gfortran (Mac OS X での MacPort の gcc 4.4 または 4.6) は、どちらにもあまり満足していません。-1チートしての代わりに値を代入することでおそらく回避できます255が、それは非常に使いにくいです。コンパイラ フラグ-fno-range-checkはコードのコンパイルに役立ちましたが、他の Fortran コンパイラでは使用できない可能性があり、私はそれを醜い解決策と考えています (他の警告をキャッチしたい場合もあります)。値'FF'Xまたは'11111111'Bも 32 ビット整数として認識されます。
コードがさまざまな Fortran コンパイラ間で移植可能であることが強く望まれます。