【问题标题】:When I write a Macro with C++, it gives error like "the declaration has no storage type"当我用 C++ 编写宏时,它会出现“声明没有存储类型”之类的错误
【发布时间】: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) 的代码,这是我的错误,感谢您的帮助

标签: visual-c++ c-preprocessor


【解决方案1】:

可能是vs2017编辑器bug,我注释代码并在另一个地方再次编写它,它编译了!太神奇了。

【讨论】:

  • 不这么认为。如果您不更改代码,它将无法正常工作。 do 子句不完整。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多