gpt4 book ai didi

c - ncurses:警告:取消引用 ‘void *’ 指针

转载 作者:行者123 更新时间:2023-12-02 00:08:02 25 4
gpt4 key购买 nike

我试图理解 NCURSES 源代码并在错误点上进行了攻击。代码如下:

#include<stdio.h>


struct screen {
void *_current_attr;
};

typedef struct screen SCREEN;

SCREEN * SP = ((void *)0);

int main(int argc, char **argv){
((*(SP)->_current_attr)) = (
((*((SP)->_current_attr))) &
~((~(1UL - 1UL)) << ((0) + 8))) | ((1UL - 1UL)
);
return 0;
}

我收到的错误消息为:
In function ‘main’:
warning: dereferencing ‘void *’ pointer
warning: dereferencing ‘void *’ pointer
error: void value not ignored as it ought to be
error: invalid use of void expression

我想知道错误的原因和解决方法是什么?

最佳答案

错误发生在这里:

*((SP)->_current_attr))

这相当于(据我所知)
*(SP->_current_attr)

_current_attr类型为 void* , void*正在被取消引用,这是非法的。

解决这个问题的一种方法是给 _current_attr 一个类型。 .
struct screen {
int *_current_attr;
};

关于c - ncurses:警告:取消引用 ‘void *’ 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174774/

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