2013-04-23 117 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