【发布时间】:2012-10-17 13:33:33
【问题描述】:
我想制作一个 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
}
我收到一个错误:
错误:数字常量之前的预期标识符|
【问题讨论】:
-
您在
if()中遗漏了)。另外,它是struct而不是structure。 -
这不是主要问题,但您的
if中缺少括号。 -
我们必须假设这是伪代码,因为它不是有效的 C 代码。
标签: c pointers macros c-preprocessor