현재 함수 포인터를 콜백으로 사용하고있는 코드가 있습니다. 이 사실 인 TinyOS의 nesC 그 언어를 사용하는C 함수 포인터 변수 타입 클래스에 지정된 에러 저장 클래스
error_t addCommand(uint8_t command, void (*callback)(uint16_t,uint8_t)){
하지만이 것 같다 : 나는 코드의 관련 부분은 " '스토리지 클래스는 매개 변수'유형 이름을 지정"라는 GCC에서 오류에 문제가 있어요 C 문제. 문제에 대한 내 연구에서 나는 대부분 한 두 문제로 인한 제안 발견 : 헤더에 잘못된
- 뭔가 (실종 세미콜론)
- 이 (정적 또는 휘발성 값으로 함수 포인터를 전달을 즉
void (*callback)(volatile int, uint8_t)
방법에 내가 지금까지 내가 말할 수있는 문제 하나를 제거했다
. 문제 2 uint16_t
또는 uint8_t
(나는 이러한 유형의 많은 경험이없는) 휘발성의 정적 경우에만 문제입니다. 모든 팁/답변 이 문제를 해결하기 위해 크게 감사하겠습니다.
또한, 정확한 코드는 더 다음과 같습니다
command error_t CommandEngine.addCommand(uint8_t command,
void (*callback)(uint16_t,uint8_t)) {
무엇 NesC로는 C 언어에 추가하는 것은이 에러의 원인이 가능할 수도 있지만, 난이 생각하지 않습니다 경우.
EDIT : 어떤 방식 으로든 nesC였습니다. 명령이 nesC에서 사용되고 컴파일 전에 C 코드의 일부 블록으로 변환 될 때 변수 이름으로 명령을 사용하고있는 것으로 나타났습니다. 이로 인해 C 코드로 변환하는 아이디어에 대해 모두에게 감사 드리며 이로 인해이 문제가 실현되었습니다. 나는 이것을 정말로 생각해야만했다.
void (* 콜백) (uint16_t, uint8_t) - 형식이 아닌가요? 함수 정의 중에 여기에 매개 변수 이름을 사용해서는 안됩니까? – Jay
또 다른 스토리지 클래스는'extern'이므로'extern'이 올바르게 사용되지 않는 경우가 있는지 살펴보십시오. – acraig5075