-3
これはSrcPktを何に設定するのかという簡単な質問です。特定のC変数について
extern PacketStruct RxPacket[NUM_PACKETS], TxPacket[NUM_PACKETS];
extern IPMBPacketRequestStruc *SrcPkt;
SrcPkt = (IPMBPacketRequestStruc *)&(RxPacket[i].packetdata[0]);
私はCとC++をよく理解していますが、ポインタは常に私の弱点です。このコード行はRxPacketの参照を指すようにポインタSrcPktを設定しているようだ [i]が.packetdata [0]
私は正しい答えであると考えているものに部分的にしか確信して、私はいくつかの検証をします。 EDIT:
typedef struct
{
unsigned char status; // Buffer status
unsigned char stat2; // re-send status
unsigned char channel; // Channel source/destination
unsigned char length; // Total # of bytes in packetdata
unsigned char index; // Current byte being processed in packetdata
unsigned char packetdata[IPMB_MAXDATALENGTH];
} PacketStruct;
typedef struct
{
unsigned char rsSA;
unsigned char netFNrsLUN;
unsigned char cksm1;
unsigned char rqSA;
unsigned char rqSEQrqLUN;
unsigned char cmd;
unsigned char pktdta[37]; // rest of packet data
} IPMBPacketRequestStruc;
すべての警告とデバッグ情報( 'gcc -Wall -Wextra -g')と**デバッガ** gdb'を使ってプログラムをステップバイステップで実行し、プログラムの状態を問い合わせることができますポインタ変数の)。あなたの理解を向上させます。紙の上に(ポインタのための矢印付きの)メモリの絵を描くのを頑張ってください。 –
ところで、あなたの質問にはいくつかの[MCVE](http://stackoverflow.com/help/mcve)が欠けています。より多くのコード(型の定義:何が* PacklyStructなど)は、私たちは推測することができますが、答えはありません。そして、指針を描くことは本当に私の最高のアドバイスです。 –
構造体型の2つの配列と、別のソースで定義されている別の構造体へのポインタを持っています。次に、RxPacket配列のi番目の要素のいくつかのメンバーの最初の要素のアドレスをキャストして、ポインタをSrcPktに割り当てます。少なくとも私の理解に。 – Gnqz