【发布时间】:2017-08-18 19:17:37
【问题描述】:
我正在尝试使用clock_gettime 函数,但无法弄清楚所需的标题是什么(或者如果不是标题问题,我做错了什么)。
这是我的代码:
#include <stdio.h>
#include <unistd.h> /*for CLOCK_REALTIME? */
#include <time.h>
#define NANO_TO_MILLI(N) ((N)/ 1000000)
struct TimeStruct
{
time_t sec;
time_t nano;
};
typedef struct TimeStruct TimeStruct;
void getTime (char* _timeStr);
int main()
{
char* time;
getTime(time);
printf("%s\n", time);
return 0;
}
void getTime (char* _timeStr)
{
time_t milli;
TimeStruct *curTime;
struct tm* info;
clock_gettime(CLOCK_REALTIME, curTime);
milli = NANO_TO_MILLI(curTime-> m_nano);
info = localtime(&(curTime-> m_sec));
sprintf(_timeStr, "%d-%d-%d %d:%d:%d.%d", 1900 + info->tm_year, info->tm_mon, info->tm_mday, info->tm_hour, info->tm_min, info->tm_sec, (int)milli);
}
我收到以下错误:
函数clock_gettime的隐式声明
CLOCK_REALTIME 未声明
我错过了什么?
我正在使用带有 ansi 和 pedantic 标志的 gcc (linux) 进行编译
【问题讨论】:
-
你是怎么编译的?
-
旁白:
TimeStruct *curTime; .... clock_gettime(CLOCK_REALTIME, curTime);很可疑。我希望TimeStruct curTime; .... clock_gettime(CLOCK_REALTIME, &curTime); -
另一个未成年人:
"%d-%d-%d %d:%d:%d.%d"-->"%d-%d-%d %d:%d:%d.%03d"和info->tm_mon-->info->tm_mon+1. -
注意
clock_gettime()是一个非标准函数。