2012-09-23 3 views
0

나는 나를 돌려 보내는 간단한 타이머 클래스를 만들고있다. 현재 시간 (밀리 초 단위). 리눅스에서는 gettimeofday를 사용하고 있습니다. 이 함수가 어떤 리턴 타입을 가져야하는지 궁금합니다. 즉 double getMillis() 또는 uint64_t getMillis() 등 ... 나는 더 많은 값을 저장할 수 있다고 말하고 싶습니다. 그래도 인터넷 검색을하는 동안 다른 구현을 많이 보았습니다.Timer 클래스를 만들 때 값을 저장하는 데 사용해야하는 데이터 유형은 무엇입니까? (C/C++)

이것에 대한 조언이 필요하십니까?

감사

+0

'uint64_t'는 더 큰 값을 가질 수 있습니다. 'double' ??? 'double'은 정밀한 문제를 야기 할 수도 있고 그렇지 않을 수도 있습니다.하지만 uint64_t보다 더 큰 값을 넣을 수 있습니다. – Grizzly

+0

Grizzly 정확하게 기억한다면 모두 8bytes이지만 double은 signed + real입니다. – pollux

+2

C++ 11에는 헤더가 있습니다. 'auto time = std :: chrono :: system_clock :: now(). time_since_epoch(). count();'를 할 수 있습니다. 돌려 주어지는 형태는'std :: chrono :: system_clock :: rep'입니다. 플랫폼 특정 코드가 필요 없습니다. –

답변

1

(밀리 초)이 카운트이기 때문에 내가 부호없는 정수 유형으로 갈 것입니다. 덧셈과 뺄셈은 float없이 신뢰할 수 있습니다. 내가 사용한 대부분의 구현체에는 부호없는 정수형이있다.

2

밀리 초 단위로 절대 시간 소인을 보관할 때 권장하는 데이터 유형은 주로 time_t가 서명 되었기 때문에 int64_t입니다.

관련 문제