0

関数を使用して構造体を介してPORTアドレスを渡そうとしていましたが、ポインターを使用した作業を修正する方法がわかりません。これが私の構造体と関数のコードです:

typedef struct {
read:1;
last_read:1;
changed:1;
unsigned short *port;    //Here the declaration of the pointer that will receive the address
pin:1;
active_state:1;
} Input;

void Setup_input(Input s,char *port, char pin, char active_state){
 s.port = &port;        //HERE I TRY TO PASS THE ADDRESS OF THE PORT TO THE POINTER OBJECT
 s.pin = pin;
 s.active_state = active_state;

私はそれを正しく行っていないことが判明し、ポートを正しく読み取ったり制御したりできません。Mikroelectronic PRO コンパイラを使用しています。

4

1 に答える 1

0

このコード行

s.port = &port;

パラメータのアドレスを member に格納しますportport構造体のポインターを逆参照すると、呼び出し中にパラメーターがあったスタック メモリにアクセスしますSetup_input()。これにより、未定義の動作が発生します。

明らかに必要なのは、パラメーターの値を割り当てることです。

s.port = port;
于 2014-12-09T08:03:44.947 に答える