2012-07-30 3 views
5

이 코드를 고려알 수없는 기능에 대한 gcc 경고 방법

int function() 
{ 
    int a = 1 ; 
    int b = helper(&a); 
    return b ; 
} 

int main() 
{ 
    function(); 
    return 0 ; 
} 

이 코드는 '도우미'라는 함수가 선언되지 않은 사실에도 불구하고, GCC를 사용하여 문제없이 개체 코드 컴파일합니다. 나는 링커가 이것을 알아야한다는 것을 알고 있지만, 링커와 컴파일러가 오류를 발생시키지 않고 올바른 헤더 (함수 선언 포함)가 포함 되었으면 불분명 한 bugs을 해결했습니다.

관련이 있지만 실제로 원하는대로 달성하지 못하는 gcc 경고가 몇 가지 있습니다. -Wiissing-prototypes, -Wmissing-declarations 및 -Wstrict-prototypes. 글로벌 함수가 으로 정의 된 경우 이러한 경고는 프로토 타입 누락으로 제한됩니다. 전역 함수가 인 경우 누락 된 프로토 타입에 대한 경고는입니다.

누구나 대안을 제안 할 수 있습니까?, 감사합니다.

답변

11

당신은 -Wimplicit-function-declaration 경고를 원합니다.

저는 개인적으로 -Wall -Wextra으로 코드를 컴파일하는 것을 선호합니다.

+0

예 !, 원하는대로 할 수 있습니다. –

+1

-Wall (항상 사용해야 함) 및 -std = c99를 사용할 때 활성화됩니다. – ext

+0

@ext 예, 이것은'man gcc '가 말하는 것입니다. –

4

을 사용하여 강제로 undefined function 오류가 발생합니다.

+0

이것은 링커 옵션입니까? –

+0

@GearoidMurphy : 예. – Jack

관련 문제