関数呼び出しから割り当ての正しいデータ型を見つけるのに助けが必要です。
content
のフィールドのデータを取得しようとしていますN_Vector u
。ドキュメントの内容は次のとおりです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
グローバル長とローカル長を含む構造体、連続するローカルデータ配列の先頭へのポインター、MPIコミュニケーターおよびフラグとして定義します。struct _N_VectorContent_Parallel { long int local_length; long int global_length; booleantype own_data; realtype *data; MPI_Comm comm; }
content
つまり、タイプの構造を_generic_N_Vector
「指し示す」ということだと思い_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
、これら2つの構造の1つ(または両方)が含まれていると書かれているようです。
では、なぜエラーメッセージが表示されるのでしょうか。 v_cont
データを受信 するために宣言する正しいデータ型は何NV_CONTENT_P
ですか?
これは長くて詳細な質問であることは知っていますが、それを理解するのに十分な理解がありません。ご協力いただきありがとうございます。