在 embed 的世界中, code size 总是珍贵的.
引入 time.h 的 mktime(), 在vc中似乎是一个必然的下意识的选择.
在一棵 arm7中可能就要颇费思量. 有必要为此牺牲 >500 bytes 的 size 吗.
这完全取决我们目的达到与否.
在网络上找到的一段代码, 通过 day,month,year 解算 yearday 就是令人愉快的小size function, 满足要求, 代码如下:
/// calc yearday from day/month/year
U16 calc_yearday(U8 day, U8 month, U16 year)
{
U16 sum = 0;
U8 leap = 0;
// calc month_sum + current day
switch(month)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:break;
}
sum = sum + day;
// leap year?
if( (year%400==0) || ( (year%4==0)&&(year%100!=0)) )
leap=1;
else
leap=0;
if( (leap==1) && (month>2) )
sum++;
return sum;
}
用户1277994 2010-3-29 13:39