gpt4 book ai didi

c - 做之前的预期表达。使用 do while 循环的宏

转载 作者:太空宇宙 更新时间:2023-11-04 05:25:08 24 4
gpt4 key购买 nike

我已经实现了我的自定义 sizeof 运算符,如下所示

#define my_sizeof(x) do{\
typeof(x) _a;\
(char*)(&_a + 1) - (char*)(&_a);\
}while(0)

如果我编译它,我会得到错误

test.c:26:22: error: expected expression before ‘do’

无法弄清楚我做错了什么。

我的主要功能如下。

int main()
{
int a;

unsigned long long b;
double c;

printf("size of a %zd \n",my_sizeof(a));
printf("size of b %zd \n",my_sizeof(b));
printf("size of c %zd \n",my_sizeof(c));
return 0;
}

最佳答案

您的宏扩展为 do 循环。 do 循环不是表达式,也不会产生值。编译器告诉您不能在您尝试使用 do 循环的地方使用它,这是正确的。

C 中没有干净的替代方案,因为您不能在表达式中声明变量。

关于c - 做之前的预期表达。使用 do while 循环的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32619319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com