unsigned long long
之前犯的一个错误,如下:
写了一个函数用于获取本地绝对时间的,返回值类型是:unsigned long long。
unsigned long long mcbox_abs_time(void)
{
#undef func_format_s
#undef func_format
#define func_format_s "mcbox_abs_time() "
#define func_format()
struct timeval tv;
gettimeofday(&tv, NULL);
unsigned long long milsec =
(unsigned long long)(tv.tv_sec) * 1000 +
(unsigned long long)(tv.tv_usec) / 1000;
return milsec;
}
遇到的问题:返回的绝对时间不对。刚开始猜想是不是unsigned long long8个字节太大,改为指针传参,还真的解决了。然后下班时把这个问题及对应写在日报里,领导看了我写问题及解决不以为意。第二天他一检查我的代码,分分钟就看出问题原因——发现我写的函数没有定义。
因为mcbox_abs_time()函数未显示声明,unsigned long long mcbox_abs_time(void)这个函数在别的文件被调用时会默认返回类型是int而不是unsigned long long,故返回值和预期不一致。(尴尬!)