val)"有什么作用?-6ren"> val)"有什么作用?-我特别想知道什么->val在 sizeof(((stoken_t*)(0))->val) 还有什么stoken_t*(0)指针做的,特别是什么(0)方法? 我希望我已经足够清楚地表达了我的问题。 最佳-6ren">
gpt4 book ai didi

c - 这行代码 "#define LIBINJECTION_SQLI_TOKEN_SIZE sizeof(((stoken_t*)(0))->val)"有什么作用?

转载 作者:行者123 更新时间:2023-12-03 16:01:39 25 4
gpt4 key购买 nike

我特别想知道什么->val

sizeof(((stoken_t*)(0))->val)
还有什么 stoken_t*(0)指针做的,特别是什么 (0)方法?
我希望我已经足够清楚地表达了我的问题。

最佳答案

这是一种在编译时访问结构成员的方法,无需定义该结构类型的变量。
类型转换 (stoken_t*)0 的值模拟该结构类型的指针,允许您使用 ->运算符,就像您在该类型的指针变量上使用它一样。
添加,如 sizeof是一个编译时运算符,该表达式不会在运行时计算,因此与其他情况不同,这里没有发生空指针取消引用。
它类似于类似的东西

stoken_t * ptr;
sizeof(ptr->val);

关于c - 这行代码 "#define LIBINJECTION_SQLI_TOKEN_SIZE sizeof(((stoken_t*)(0))->val)"有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63774132/

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