【发布时间】:2018-08-27 02:10:41
【问题描述】:
当我编写一个 C++ 的宏时,它正在处理“声明没有存储类型”的错误,这是我的代码,它有什么问题?如果我用函数实现,它工作得很好。它怀疑我。
#define FLAG_CLEAR_MUL_BIT(op,beg,end) do{\
long _dwFlag = 0;\
for (int _i = 0; _i < end - beg;++_i)\
{\
_dwFlag |= (1 << _i);\
}\
_dwFlag = _dwFlag << beg;\
_dwFlag = ~_dwFlag;\
op = op & _dwFlag;\ // preprocessing wrong:This declaration has no storage type,if impletment with inline function,it works well
}
【问题讨论】:
-
您最后是否缺少
while(0)?在错误之前,反斜杠之后的行尾也有空格。删除它。 -
// preprocessing wrong...注释前的反斜杠不会转义换行符。因此,您的宏在最后一个}之前结束。此外,您需要以while(false);结束do子句。 -
是的,我粘贴了缺少 while(0) 的代码,这是我的错误,感谢您的帮助