当我学习C代码的时候,我试着做些什么,我想测试一些东西。它按预期工作,但抛出警告。
警告1来自默认启用的不兼容指针类型的分配
代码很简单。我在这里所做的就是在atmega2560上切换PIN atmega2560。我有一个LED钩住它,我可以看到它闪烁,所以我知道它的工作,如预期。
有人能解释为什么我会看到这个错误,即使它是按预期执行的吗?守则如下:
#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位寄存器,每个引脚有一个位来控制该引脚是高还是低。
现在,我很高兴它起作用了。但这些警告让我很恼火。
发布于 2013-07-14 21:58:26
int *ptr;
ptr = &PORTB; // This line throws the warningPORTB是一个定义如下所示的volatile unsigned char:
*(volatile unsigned char *) 0xBEEF将ptr声明更改为volatile unsigned char *
volatile unsigned char *ptr;
ptr = &PORTB;https://stackoverflow.com/questions/17644156
复制相似问题