2017-07-14 13 views
0

#マクロを関数として定義する必要があります。たとえば:マクロ内での関数の定義(C言語)

#define REGISTER 0x80000000 
... 
writel(addr, nic->regs + REGISTER); // arguments are address and register 

私はそのように定義された:

#define WRITEL(addr, nic->reg + reg) ((writel(addr, nic->regs + (reg)))) 

ここで何が悪いのでしょうか? ありがとう

+0

マクロではなく、すべてのメリットを持つ通常の機能ではありませんか? 。etcなど)? –

答えて

7

マクロの引数は、通常の関数の引数のように少しです。左側には、右側に使用されている名前が必要です。

+0

ありがとうございます!これらのことは決してしなかった。私は原理があると思う。私は本当にあなたの助けに感謝します –

+0

しかし、()で関数をカバーする必要がありますか? –

+0

@GeorgeZ。そうではない。 – tilz0R