2013-04-18 6 views
2

MPLABX (마이크로 칩 제품 용 IDE)와 XCC (GCC 기반) 컴파일러를 사용하여 C에 임베디드 코드를 작성하고 있습니다.-Wmissing-prototype을 사용할 때 인터럽트 루틴에 대한 프로토 타입이 없다는 GCC 경고를 어떻게 보입니까?

저는 모든 기능에 대한 프로토 타입이 있는지 확인하기 위해 -Wmissing-prototypes을 사용하고 있습니다. 내 문제는 내가 많은 인터럽트 서비스 루틴을 가지고 있으며 컴파일러가 이것들에 대한 프로토 타입을 놓치고 있다고 불평하는 것이다.

ISR 기능은 사용자 소프트웨어에 의해 직접 호출되지 않으므로 코드의 어느 곳에 나 프로토 타입을 넣고 싶지 않습니다. 인터럽트 서비스 루틴에 대한 제외

없는 프로토 타입에 대한 경고를 표시하는 방법은 없나요

, (즉, 기능 __attribute__((interrupt,auto_psv)) 태그)?

+2

왜 당신이 바로 정의 옆에 프로토 타입을하지 않습니다 예를 들어

? –

+0

나는 그것에 대해 생각해 봤지만, gcc에 너무 익숙하지 않아서 내가 알지 못하는 좀 더 깨끗한 방법이있을 거라고 생각했다. 이런 식으로해야한다면 프로토 타입과 정의 둘 다에 속성 태그를 포함해야합니까? – w1res

+1

나는 그것이 중요하다고 생각하지 않는다. 하지만 한 곳에서만 원한다면 프로토 타입이 그 곳이라고 생각합니다. 나는 한 곳이나 다른 곳에 있어야하는'always_inline'에 문제가 있다는 헷갈리는 기억을 가지고 있습니다 만, 나는 기억이 안납니다. –

답변

1

나는 Carl Norum의 조언에 따라 함수 정의 바로 위에 함수 프로토 타입을 추가했습니다.

void __attribute__((interrupt,auto_psv)) _SPI2ErrInterrupt(void); 
void _SPI2ErrInterrupt(void) 
{ 
    // Do ISR stuff... 
}