[英]Is there any function in Contiki similar to clock_gettime() from time.h?
[英]Is there any function from time.h that sets internal buffer
這是我的代碼:
int main()
{
time_t time1, time2;
struct tm *timeinfo1, *timeinfo2;
char *time1str, *time2str;
time1 = 3600;
time2 = 3720;
// here i must insert function from time.h
///////////////////////////
timeinfo1 = localtime(&time1);// here
localtime(&time2);
time1str = new char [strlen(asctime(timeinfo1)) + 2];
strcpy(time1str, asctime(timeinfo1));
timeinfo2 = localtime(&time2);
time2str = asctime(timeinfo2);
puts(time1str);
puts(time2str);
getchar();
return 0;
}
是否有任何函數可以在斜杠注釋之間插入以設置內部緩沖區。 此緩沖區擦除我之前的值。
就在這里。 您正在尋找的是localtime()
的可重入版本: localtime_r()
。 它的工作原理與localtime()
完全相同,只是它將結果寫入您作為參數而不是靜態緩沖區提供的緩沖區。 原型是:
struct tm *
localtime_r(const time_t *clock, struct tm *result);
應用程序中的用法如下所示:
struct tm timeinfo1, timeinfo2;
...
localtime_r(&time1, &timeinfo1);
localtime_r(&time2, &timeinfo2);
由於您僅使用C標記了您的問題。 在包括C99的C中,沒有這樣的功能。 C11現在有一個函數localtime_s
,它是可選的邊界檢查擴展的一部分:
struct tm *localtime_s(const time_t * restrict timer, struct tm * restrict result);
不幸的是,實現該擴展的平台還不多。
POSIX有一個localtime_r
函數,它具有完全相同的接口和類似的語義。 為了捕獲這種系統並保持便攜,你可以做類似的事情
#ifdef _XOPEN_SOURCE
# define localtime_s localtime_r
#endif
或者如果你想讓它更接近localtime_s
應該提供的額外保證
#ifdef _XOPEN_SOURCE
struct tm *localtime_s(const time_t * restrict timer, struct tm * restrict result) {
return (timer && result ? localtime_r(timer, result) : 0);
}
#endif
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.