其实这个宏在do后,if之间有其他函数调用,为了简化我删掉了
原始代码只有这个 (p) = (typeof(*v) *)(v); 报错,我加了if,还是报错
刚才改成decltype也是报错
看了代码预处理后变成,看起来还是*__null 错误?
int main()
{
int * a=__null;
printf("%p", a);
do { if(__null!=__null){(a) = (decltype(*__null) *)(__null);}else{(a)=__null;} } while (0);
printf("%p", a);
return 0;
}
【 在 z16166 (Netguy) 的大作中提到: 】
: 标 题: Re: 请教一个typeof的问题
: 发信站: 水木社区 (Tue Mar 16 10:10:22 2021), 站内
:
: typeof不是c++的keyword,C++没这个关键字。试试decltype
:
: 这宏为啥不直接写成(p) = (v)?
: 就是为了检查v的类型?
:
: --
: ※ 修改:·z16166 于 Mar 16 10:16:08 2021 修改本文·[FROM: 123.115.135.*]
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 123.115.135.*]
--
修改:z16166 FROM 123.115.135.*
FROM 36.112.24.*