2014-11-07 3 views
2

내 코드에 ftruncate 함수를 사용하고 싶습니다. 옵션 std = c99로 컴파일해야합니다. 내가 인터넷에서이 문제를 해결할 수있는 해결책을 찾기 위해 공동경고없이 c99에서 ftruncate를 사용하는 방법

In function ‘test’: 
warning: implicit declaration of function ‘ftruncate’ [-Wimplicit-function-declaration] 

하지만 성공하지

나는 열린 파일의 내용을 지울 때문에 나는 ftrucnate 사용 : 나는 경고 얻을. 내가 잠그면 (무리).

+1

실제 코드의 일부를 보여 주시겠습니까? 그리고 필요한 모든 헤더 파일을 포함 시켰습니까? – kraskevich

+0

'#include '을 포함 시켰습니까? –

답변

3

ftruncate()은 표준 C 함수가 아니기 때문에 표준 적용을 요청 했으므로 적절한 기능 테스트 매크로를 정의해야합니다 (feature_test_macros(7) 참조).

ftruncate(): 
     _BSD_SOURCE || _XOPEN_SOURCE >= 500 || 
     _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED 
     || /* Since glibc 2.3.5: */ _POSIX_C_SOURCE >= 200112L 

, 예를 들어, 당신이이 매크로 중 하나 정의해야합니다 ftruncate() 기능을 노출 :

gcc -c -std=c99 -D_XOPEN_SOURCE=500 myfile.c 
+0

불행히도, 나는 상수 집합과 함께이 오류가 계속. 할 수있는 다른 트릭이 있습니까? Cygwin에서 실행 중입니다. – Czechnology

+0

main() 함수 나 헤더 파일 앞에 함수 프로토 타입을 지정할 수 있습니다. int ftruncate (int fd, off_t length); – AstroFloyd

1

인 FatalError의 대답했던 ftruncate(2) 맨 페이지에서

나를 위해 일하지 않아. 대부분 작동하려면 다음을 수행해야합니다.

#include <unistd.h>