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

Hou*_*ust 5 c pointers structure sizeof dereference

我特别想知道->val

sizeof(((stoken_t*)(0))->val)
Run Code Online (Sandbox Code Playgroud)

什么stoken_t*(0)指针(0)呢,特别是什么意思?

我希望我已经足够清楚地表达了我的问题。

Sou*_*osh 6

这是一种在编译时访问结构成员的方法,无需定义该结构类型的变量。

演员阵容(stoken_t*)为值0模仿了结构类型的指针,让您利用的->操作上,就像你会使用它在该类型的指针变量。

另外,作为sizeof编译时运算符,表达式不会在运行时计算,因此与其他情况不同,这里没有发生空指针取消引用。

它类似于类似的东西

stoken_t * ptr;
sizeof(ptr->val);
Run Code Online (Sandbox Code Playgroud)