Sun Studio 12:Fortran 编程指南

11.6 带标号的 COMMON

可以在 C 中使用全局 struct 来模拟 Fortran 带标号的 COMMON。

表 11–16 模拟带标号的 COMMON

Fortran COMMON 定义 

C“COMMON”定义 


COMMON /BLOCK/ ALPHA,NUM
...

extern struct block {
  float alpha;
  int num;
};
extern struct block block_ ;
main ()
{
...
  block_.alpha = 32.;
  block_.num += 1;
...
}

请注意,C 例程建立的外部名称必须以下划线结束,才能与 Fortran 程序创建的块进行链接。另请注意,可能需要使用 C 指令 #pragma pack 来获得与 Fortran 相同的补白。

缺省情况下,f95 会将通用块中的数据与至多 4 字节边界进行对齐。要获得通用块中所有数据元素的自然对齐并符合缺省结构对齐,请在编译 Fortran 例程时使用 -aligncommon=16