간단한 설정 : 기능 및 기능 구현을위한 프로토 타입이 n 개 있습니다. 하나의 큰 함수 포인터 배열이 있습니다. 각 함수는이 배열에 나열됩니다. gcc로 컴파일 할 때 여전히 기능을 수행하는 경우도 있습니다.컴파일러가 사용되지 않는 함수를 경고하도록하는 원인은 무엇입니까?
코드 :
void foo1(void);
void foo2(void);
void bar1(void);
void bar2(void);
/* and their implementations */
void (*functions[])(void) = { foo1, foo2, bar1, bar2 };
이 설정이 (그냥 예) 모습입니다! 이 foo/bar 함수 중 하나는 gcc로 컴파일 할 때 -Wunused-function 경고를 발생시킵니다. 다른 사람들은 그렇지 않습니다. 왜? 정적 함수 선언 아니지만 항 또는 비 인라인 정적 함수가 미사용 될 때마다
경고를 얻기 위해 실제로 컴파일 할 수있는 것을 게시 할 수 있습니까? – cnicutar
gcc (4.7.1)가 경고를 내도록 설득 할 수 없습니다. 어떤 버전을 사용하셨습니까? –
글쎄, 실제 코드는 훨씬 더 복잡합니다. 몇 가지 오류가 있으며 현재 링크하지 않지만 원할 경우 컴파일 할 수 있습니다. http://beyermatthias.de/git/index.php?p=minx.git&a=shortlog&h=refs/heads/split_source gcc 버전은 4.7.2입니다. – musicmatze