Newbie Pointer/Adresse Optimierung Frage.Wie vermeidet man die Variable time_t?
Als Übung schrieb ich diesen Code.
/* -------------------------------------------------------------
FUNC : dateplusdays (date plus days)
add/substract days to/from date
days can be positive or negative
PARAMS : date (int, format yyyymmdd), days (int)
RETURNS : date (int, format yyyymmdd)
REMARKS :
---------------------------------------------------------------- */
int dateplusdays(int date_1, int days) {
int year, month, day;
int date_2;
struct tm time;
time_t time_seconds;
year = (int) floor(date_1/10000.0);
month = (int) (floor(date_1/100.0) - year * 100);
day = (int) (floor(date_1) - month * 100 - year * 10000);
time.tm_sec = 0;
time.tm_min = 0;
time.tm_hour = 0;
time.tm_year = year - 1900;
time.tm_mon = month - 1;
time.tm_mday = day;
time_seconds = mktime(&time) + days * 86400;
time = *localtime(&time_seconds);
date_2 = (time.tm_year + 1900) * 10000 + (time.tm_mon + 1) * 100 + time.tm_mday;
return date_2;
}
nun für die Ausübung Zweck, würde Ich mag diese 2 Zeilen in einer einzigen Zeile setzen, damit die Variable time_seconds vermieden werden.
time_seconds = mktime(&time) + days * 86400;
time = *localtime(&time_seconds);
localtime benötigt die Adresse einer time_t-Variablen. Ich sehe nicht, wie ich den Schritt mit dieser time_t-Variable überspringen könnte.
Nicht stören. Es wird kaum zu einem optimierten Code führen. Schreiben Sie einfach den Code wie er jetzt ist (was wohl einfacher zu lesen ist) und lassen Sie den Compiler (der heutzutage ziemlich gut ist) seine Arbeit machen. – kaylum