2012-01-12 3 views
2

C에서 함수 선언은 프로토 타입 또는 비 프로토 타입 선언 일 수 있습니다. C99 비 프로토 타입 선언이 사용되지 않습니다, 나는 얻을 수는 없지만 프로토 타입이 아닌 선언에 대한 컴파일 경고 받기

int foo(); /* non-prototype declaration */ 

int bar (void); /* prototype declaration */ 

int main (int argc, char **argv) 
{ 
    return 0; 
} 

는 GCC가 그들에 대해 불평 할 : 예를 들어, 다음과 같은 최소한의 프로그램을 고려하십시오. 예를 들어, GCC와 함께 위의 프로그램을 컴파일하고 바로 사용할 수있는 모든 오류는 성공 : 프로토 타입없는 함수 선언에 대한 경고를 방출하는 GCC를 설득 할 수있는 방법은

$ gcc -std=c99 -pedantic -Werror -Wall test.c 
$ 

있습니까?

(Keith Thompson에 의해 an answer에서 영감을 질문.)

답변

4

나는 당신이 찾고있는 옵션이 gcc-std=c99 -pedantic -Wall과 옵션은 이전 스타일 함수 선언에 대한 경고를하지만하지 않는 -Wstrict-prototypes

+0

나는 그것이'-Wall'에 의해 포함될 것이라고 생각했지만 분명히 틀 렸습니다. :-) –

1

주 생각 C에서는 구식 함수 선언이있을 때 구현을 구현할 필요가 없습니다.

C는 구식의 함수 선언을 C89 이후 구식으로 사용하는 것을 특징으로하지만 여전히 유효한 C 코드 (C89/C99/C11에서)입니다.

관련 문제