以下标头中的 PETSC_COMM_WORLD 扩展为什么类型和值?它只是对范围的重新定义MPI_Comm
吗extern
?
#define PETSC_EXTERN extern PETSC_VISIBILITY_PUBLIC
PETSC_EXTERN MPI_Comm PETSC_COMM_WORLD;
这是简单的文本替换,所以你最终得到:
extern PETSC_VISIBILITY_PUBLIC MPI_Comm PETSC_COMM_WORLD;
因此PETSC_COMM_WORLD
is的类型等PETSC_VISIBILITY_PUBLIC MPI_Comm
取决于PETSC_VISIBILITY_PUBLIC
尚未提供的 的定义。
从网上粗略搜索,构建petsc
DLL时为空或使用它__attribute__((visibility ("default")))
时为属性。
它extern
本身不控制或修改类型(也不是该属性),它只是声明此变量不是在这里创建的,但应该在其他地方可用。
该值完全取决于您定义变量的位置、它的作用域、是否初始化它等等。