0

構造体と関数があり、読み取った構造体へのポインタを返します。

typedef struct cal_t {
    float xm; 
    float ym; 
    float xn; 
    float yn; 
} cal_t;


struct cal_t *lld_tpReadCalibration(void);

他のどこかに、その構造体のインスタンスがあります。

struct cal_t cal;

次に、構造体のそのインスタンスの値を、ポインタが返される構造体の値に割り当てる必要があります。だから私が欲しいのは、cal.xmがlld_tpReadCalibration()内のcal->xmと同じ値であるということです。象徴的に:

struct cal_t cal;

cal = lld_tpReadCalibration();

しかし、もちろん、これは機能しません。

error: incompatible types when assigning to type 'volatile struct cal_t' from type 'struct cal_t *'

どうすればこれを思い通りに動作させることができますか?

ご協力いただきありがとうございます。

4

2 に答える 2

2

どういうわけかポインタを逆参照する必要があります。*関数からポインタを取得しているので、演算子またはのいずれかを探しています。->これはもちろん、withの同義語です*

calとして定義するとstruct cal_t、関数はへのポインタを返しますcal_t。したがって、ポインタを逆参照する必要があります。

cal = *lld_tpReadCalibration();
于 2012-10-23T01:30:23.550 に答える
1

関数の戻り値は、ポインタ型であるstructcal_t*です。

したがって、型がstructcal_t*である変数に戻り値を割り当てる必要があります。

例えば、

struct cal_t *cal_ptr;

cal_ptr = lld_tpReadCalibration();
于 2012-10-23T01:31:14.580 に答える