【发布时间】:2018-05-28 12:48:30
【问题描述】:
我尝试使用宏来编写这个函数
unsigned int put_0_right(unsigned int value, int order)
{
int i;
for(i=0; i<order; i++)
value=clear_bit(value,i);
return value;
}
所以我写了这个
#define unsigned int mettre_0_droite(value, order)(\
{\
int i=0;\
for(i=0; i<order; i++)\
{value=clear_bit(value,i);}\
return value;\
})
但我收到此错误expected declaration specifiers or '...' before '{' token
【问题讨论】:
-
类似函数的宏没有返回类型。在
mettre_0_droite之前丢失unsigned int。 -
类似函数的宏也没有
return语句。 -
如今,类似函数的宏通常被认为是个坏主意。您尝试将
mettre_0_droite编写为宏是否有原因?让它“返回”计算出的value将非常困难。 -
我怎样才能让它返回“值”?
-
我建议您阅读有关宏的更多信息 - 它们不是 C 语言编译代码的一部分。它们在源文件在文件被编译之前被替换和扩展。宏替换的结果可能导致函数声明,正如 C 语言定义的那样,但宏本身不是函数。