我想制作一个C宏来替换if语句。

我从来没有对C宏有很好的了解,我需要做令牌吗
粘贴?

#define BROWSER_HTML_HOW_OPENTAG 0x19939292
structure  { dword how;  } _tag;
structure  { _tag cur_tag;  } _ibot;

// works fine
foo()
{
    _ibot*ibot;
    if(ibot->cur_tag->how==BROWSER_HTML_HOW_OPENTAG) { } // do something
}


但我想实现这个

#define browserTagCheck(tag,how)    (tag->how==how)
foo()
{
    _ibot*ibot;
    if(browserTagCheck(ibot->cur_tag,BROWSER_HTML_HOW_OPENTAG) {} // do something
}


我收到一个错误:


  错误:数字常量前的预期标识符|

最佳答案

我认为您在两种意义上使用名称how:作为cur_tag的成员以及作为browserTagCheck宏的参数。尝试对宏参数使用其他名称。

关于c - C预处理器宏,用于指向结构成员的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12935529/

10-12 17:11