簡體   English   中英

指向結構的指針成員

[英]Pointing struct's pointer member

我從編譯器收到如下錯誤:

C51編譯器V9.01-SN:C1ADC-HAI60D版權所有KEIL ELEKTRONIK GmbH 1987-2009 *警告SEQUENCE.C第300行中的C260:'=':指針截斷* SEQUENCE.C 301行中的錯誤C190:'&':不是左值

以下是我的代碼:

   struct myCond{
    unsigned char currStatus;
    unsigned char prevStatus;
    unsigned int *timer;
    unsigned char *flag;
   }
  struct myCond StatCond;

  unsigned int data timerdata;
  bit bdata timeflag;

  void someSubroutine (void)
  {
    struct myCond *tempCond;

tempCond = &StatCond;
tempCond->timer = &((unsigned int)timerdata);
tempCond->flag = &((unsigned char)timeflag);
  }

我們是否應該猜測哪條線是301?

據我了解,問題出在這里:

tempCond->timer = &((unsigned int)timerdata);
tempCond->flag = &((unsigned char)timeflag);

(unsigned int)timerdata(unsigned char)timeflag是值, (unsigned char)timeflagr-values l-values不同,不能對其進行修改或分配,而普通timerdatatimeflagl-values 因此,您不能使用&接受r-values地址。 就像寫&1 1本身不作為對象存在於數據存儲器中。

您應該改寫:

tempCond->timer = &timerdata;
tempCond->flag = (unsigned char*)&timeflag;

而且我不太確定采用位變量的地址是否合法。 最后一行可能無法編譯。

也許重新定義結構會有所幫助:

struct myCond{
...
    bit bdata *flag; // or maybe without bdata
   }

然后編寫tempCond->flag = &timeflag;

unsigned int data timerdata;  // what is 'data', is it defined?
bit bdata timerflag;  // what are 'bit' and 'bdata', are they defined?

關於上述問題,請檢查您的代碼。 真正的攻擊后,編譯器錯誤通常報告為多行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM