【发布时间】:2012-09-03 20:30:54
【问题描述】:
我需要帮助,从函数调用中找出正确的数据类型。
我正在尝试获取N_Vector u 的content 字段中的数据。以下是文档中关于 N_Vector 的内容:
N_Vector类型定义为N_Vector u; tpedef struct _generic_N_Vector *N_Vector; struct _generic_N_Vector { void *content; struct _generic_N_Vector_Ops *ops; };...
[并行NVECTOR模块]定义
N_Vector的content字段 是一个包含全局和局部长度的结构,指向 连续本地数据数组、MPI 通信器和标志的开头。struct _N_VectorContent_Parallel { long int local_length; long int global_length; booleantype own_data; realtype *data; MPI_Comm comm; }
所以我猜这意味着_generic_N_Vector 中的content“指向”_N_VectorContent_Parallel 类型的结构(对吗?)。
然后我尝试使用宏来访问content。这是NV_CONTENT_P 的文档。
v_cont=NV_CONTENT_P(v)将v_cont设置为指向N_Vector内容的指针struct _N_VectorParallelContent类型的结构。
注意结构的不同名称!
这是什么意思?我声明v_cont 是什么类型?
我试过了
N_Vector u;
...
_N_VectorParallelContent *v_cont1;
_N_VectorContent_Parallel *v_cont2;
v_cont1 = NV_CONTENT_P(u);
v_cont2 = NV_CONTENT_P(u);
但是这些声明得到了错误“'_N_VectorContent_Parallel' undeclared...”或“'_N_VectorParallelContent' undeclared...”。
但似乎这些结构必须已经被删除了。我成功声明(并使用)u,类型为N_Vector。并且文档似乎说N_Vector 包含这两种结构之一(或两者兼有)。
那么为什么会出现错误消息?为 v_cont 从 NV_CONTENT_P 接收数据声明的正确数据类型是什么?
我知道这是一个冗长而详细的问题,但我理解的不够深入,无法再精简。 感谢您的帮助。
【问题讨论】:
-
@Timothy 间接。实际上使用 mpicc,它是(我被告知)gcc 的包装器。