今日のように構造体は、関数へのポインタです、この関数の中で、私はこのような構造のデータを使ってできる仕事になりたいので、構造体へのポインタが指定されていますパラメータとして。私は警告を取得ポインタ、構造では...</p> <p>を再入力して、パラメータもう一度
#include <stdio.h>
#include <stdlib.h>
struct tMYSTRUCTURE;
typedef struct{
int myint;
void (* pCallback)(struct tMYSTRUCTURE *mystructure);
}tMYSTRUCTURE;
void hello(struct tMYSTRUCTURE *mystructure){
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
}
int main(void) {
tMYSTRUCTURE mystruct;
mystruct.pCallback = hello;
mystruct.pCallback(&mystruct);
return EXIT_SUCCESS;
}
しかし、この問題の
デモ
'tMYSTRUCTURE *ストラクト' を.. \ SRC \ retyping.c:31:5:警告: の 'mystruct.pCallback' 引数1を渡します互換性のないポインタ型 から.. \ SRC \ retyping.c:5:31注意:予想される 'ストラクトtMYSTRUCTURE *' しかし 引数は型である
は 'struct tMYSTRUCTURE *'が必要ですが、 'struct tMYSTRUCTURE *'です。
どのように修正するのですか?
あなたのコードには、 'struct tMYSTRUCTURE' **のようなものはありません**、これは不完全な型です。あなたが持っているのは、*匿名の構造体だけです。この構造体も 'tMYSTRUCTURE'にtypedefされています。 http://stackoverflow.com/questions/612328/difference-between-struct-and-typedef-struct-in-c/612350#612350を参照してください。 –