C++ Atmel Studio:返回包含数组的寄存器

C++ Atmel Studio:返回包含数组的寄存器,c++,arrays,pointers,return,atmelstudio,C++,Arrays,Pointers,Return,Atmelstudio,我正在为Atmel工作室的Arduino编写一个项目。 在我的代码中,有两个函数如下所示: unsigned char* USART_Receive(void){ while(!(UCSR0A & (1<<RXC0)) ); return UDR0; } void Transmit(){ unsigned char *a = USART_Receive(); unsigned char pckaffe[4] = { 0x0C

我正在为Atmel工作室的Arduino编写一个项目。 在我的代码中,有两个函数如下所示:

unsigned char* USART_Receive(void){
    while(!(UCSR0A & (1<<RXC0)) );
    return UDR0;
}

void Transmit(){
        unsigned char *a = USART_Receive();

        unsigned char pckaffe[4] = { 0x0C, 0x0A, 0x0F, 0x0E };
        unsigned char pcpersienner[4] = { 0x0B, 0x0B, 0x0B, 0x0B }; 

        if(a == pckaffe && zeroCrossCounter() == 1){
            sendBurst();
        }
}

说它修复了您的整个代码完全是断章取义,但如果您愿意:

#include <cstdint>

uint8_t varaible = 0;

unsigned char* USART_Receive(void){
    return varaible;
}

void Transmit(){
        unsigned char *a = USART_Receive();
}

int main(){
    Transmit();
}
要解决此问题,请仅返回变量的地址:

#include <cstdint>

uint8_t varaible = 0;

unsigned char* USART_Receive(void){
    return &varaible;
}

void Transmit(){
        unsigned char *a = USART_Receive();
}

int main(){
    Transmit();
}
#包括
uint8_t varaible=0;
未签名字符*USART\U接收(无效){
返回&可变;
}
无效传输(){
无符号字符*a=USART_Receive();
}
int main(){
传输();
}

UDR0的类型是什么?@AdamStepniak我不确定,因为数据表中没有提到这一点。但是,编译器在错误行上显示
'uint8{aka unsigned char}'
。我改变主意了,我想返回一个字符而不是一个无符号字符。我怎么能做到呢?
In function 'unsigned char* USART_Receive()':
6:12: error: invalid conversion from 'uint8_t {aka unsigned char}' to 'unsigned char*' [-fpermissive]
 In function 'void Transmit()':
10:24: warning: unused variable 'a' [-Wunused-variable]
#include <cstdint>

uint8_t varaible = 0;

unsigned char* USART_Receive(void){
    return &varaible;
}

void Transmit(){
        unsigned char *a = USART_Receive();
}

int main(){
    Transmit();
}