0

以下标头中的 PETSC_COMM_WORLD 扩展为什么类型和值?它只是对范围的重新定义MPI_Commextern

#define PETSC_EXTERN extern PETSC_VISIBILITY_PUBLIC

PETSC_EXTERN MPI_Comm PETSC_COMM_WORLD;
4

1 回答 1

2

这是简单的文本替换,所以你最终得到:

extern PETSC_VISIBILITY_PUBLIC MPI_Comm PETSC_COMM_WORLD;

因此PETSC_COMM_WORLDis的类型等PETSC_VISIBILITY_PUBLIC MPI_Comm取决于PETSC_VISIBILITY_PUBLIC尚未提供的 的定义。

从网上粗略搜索,构建petscDLL时为空或使用__attribute__((visibility ("default")))时为属性。

extern本身不控制或修改类型(也不是该属性),它只是声明此变量不是在这里创建的,但应该在其他地方可用。

完全取决于您定义变量的位置、它的作用域、是否初始化它等等。

于 2015-05-18T05:54:38.643 回答