2012-11-08 7 views
1

다음 코드는 작동해야합니다 (stackoveflow에서 허용되는 대답 임).하지만 어떻게 든 두 가지 경고가 표시되고 결과적으로 세분화 오류가 발생합니다. 뭐가 문제 야?시간 처리 중 경고 및 런타임 오류

time_t timer; 
char buffer[25]; 
struct tm* tm_info; 

time(&timer); 
tm_info = localtime(&timer); 

strftime(buffer, 25, "%Y:%m:%d%H:%M:%S", tm_info); 

bead.c : 61 : 경고 : 나는 '

line 61 is tm_info = localtime(&timer); 
and line 63 is strftime(buffer, 25, "%Y:%m:%d%H:%M:%S", tm_info); 
+0

어떤 컴파일러입니까? 실제로 예제는 docs에있는 것과 같습니다. http://www.cplusplus.com/reference/clibrary/ctime/strftime/ – Benj

답변

2

그래서 ... 컴파일러는 localtime이 정수를 반환하고 strftime이 존재하지 않는다고 생각합니까?

<time.h>을 포함 하시겠습니까?

+0

아마추어적인 실수입니다! 고맙습니다. –

+0

필자의 경우 sys/time.h가 아닌 time.h ... 경고와 segfault가 포함되었습니다. –

0

âstrftimeâ 내장 기능의 호환되지 않는 암시 적 선언 : 63 : 경고 할당은 캐스트 bead.c없이 정수에서 포인터를 만든다 "gcc 버전 4.4.3 (Ubuntu 4.4.3-4ubuntu5)"에서 테스트 해 보았습니다.

감사합니다.

0

내가 time.h를 포함하지 않으면 segfault가 아니라면이 코드는 segfaults가됩니다.

time.h가 없으면 컴파일러는 함수의 서명을 알지 못하고 int를 반환하는 함수라고 가정합니다 (내 기억이 좋은 경우).

짧은 이야기, 시간 포함