首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码工作,但引发不兼容的指针类型警告

代码工作,但引发不兼容的指针类型警告
EN

Stack Overflow用户
提问于 2013-07-14 21:51:15
回答 1查看 2.1K关注 0票数 4

当我学习C代码的时候,我试着做些什么,我想测试一些东西。它按预期工作,但抛出警告。

警告1来自默认启用的不兼容指针类型的分配

代码很简单。我在这里所做的就是在atmega2560上切换PIN atmega2560。我有一个LED钩住它,我可以看到它闪烁,所以我知道它的工作,如预期。

有人能解释为什么我会看到这个错误,即使它是按预期执行的吗?守则如下:

代码语言:javascript
复制
#include <avr/io.h>
#include <util/delay.h>

void main(void) {
    int *ptr;
    ptr = &PORTB; // This line throws the warning

    DDRB = (1 << 7);

    while(1) {
        *ptr = (1 << 7);
        _delay_ms(1000);

        *ptr = (0 << 7);
        _delay_ms(1000);
    }
}

PORTB是一个8位寄存器,每个引脚有一个位来控制该引脚是高还是低。

现在,我很高兴它起作用了。但这些警告让我很恼火。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-14 21:58:26

代码语言:javascript
复制
int *ptr;
ptr = &PORTB; // This line throws the warning

PORTB是一个定义如下所示的volatile unsigned char

代码语言:javascript
复制
*(volatile unsigned char *) 0xBEEF

ptr声明更改为volatile unsigned char *

代码语言:javascript
复制
volatile unsigned char *ptr;
ptr = &PORTB;
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17644156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档