2013-04-23 118 views
-2

我有這樣的結構:#定義與成員從結構指針

struct spidev_data { 
    int busy; 
    int irq; 
}; 

,我只是想通過定義訪問的成員(如spidev->忙),所以我試試這個:

#define BUSY spidev->busy 

但它不工作...

有人可以告訴我如何做到這一點?

謝謝!

+0

而spidev是指向結構的指針? – Detheroc 2013-04-23 15:02:28

+3

'#define BUSY(x)x-> busy' – BLUEPIXY 2013-04-23 15:04:05

+2

總是包含錯誤信息!還有一小段代碼顯示錯誤。 '#define'本身不會給出錯誤,使用它時會出錯。 – MSalters 2013-04-23 15:05:56

回答

3

你應該試試這個

spidev_data *spidev = /* ... new or malloc ... */; 

BUSY = 1; 

但更優雅是

#define BUSY(X) (X)->busy 

... 

BUSY(spidev) = 1; 

,因爲它不是專門爲一個對象。

+1

我認爲它應該是'(X) - >繁忙' – Alex 2013-04-23 15:18:12

+0

我建議在'#define'的第二個出現o'X'處添加圓括號。 – alk 2013-04-23 15:23:54

+0

'()'被添加,謝謝。 – deepmax 2013-04-23 15:28:04