구조체를 Arduino와 함께 사용하려고하지만 구조체 포인터를 함수 호출로 전달할 수 없습니다. 주 기능을 추가하고 gcc로 내 컴퓨터를 컴파일 할 때 모든 것이 잘 작동하지만 Arduino IDE를 사용하면 오류가 발생합니다. 내가 시도Arduino : 포인터 구조체로 공용 구조체를 전달할 수 없습니다. gcc 컴파일러와 함께 할 수 있습니다.
코드이었다
typedef union
{
struct
{
unsigned unit :2;
unsigned channel:2;
unsigned status :1;
unsigned group :1;
unsigned remote :26;
};
unsigned long data;
} Signal;
Signal signal;
void testPassingStruct(Signal *variable)
{
variable->status = 1;
}
void setup()
{
signal.status = 1;
testPassingStruct(&signal);
}
void loop()
{
}
그리고 오류가 있었다 :
structtest:2: error: variable or field ‘testPassingStruct’ declared void
structtest:2: error: ‘Signal’ was not declared in this scope
structtest:2: error: ‘variable’ was not declared in this scope
ATMega/AVR에 중첩 된 구조체/공용체에 문제가있을 수 있습니다. 8 비트 레지스터가 제한되어 있습니다. 나는 보일러 플레이트 코드가 조금 더 있지만 정의가 확실히 작동 할 것이라고 생각한다. –
4 바이트로 2 레지스터입니다. ATtiny10보다 강력한 것은 거의 없습니다. –
@ IgnacioVazquez-Abrams 그렇습니다.하지만 대부분의 CPU에서는 단일 레지스터 일뿐입니다. 나는 컴파일러가이 문제를 가지고 있을지도 모른다는 사실을 알 수 없다고 말하고있다. 나는 내가 지적한 다른 문제라고 생각한다. 특히 레지스터 할당 인 경우 오류 메시지가 달라졌을 수 있습니다. –