спецификатор формата для apr apr_time_h

#c #apr

#c #apr

Вопрос:

 gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
    Apache protable runtime 1.4
    c89 and compiling in -m32 mode
 

Код:

 apr_time_t time_msecs = 0;
time_msecs = apr_time_as_msec(apr_time_now());
printf("Time in msecs [ %lu ]n", time_msecs);
 

Я получаю следующее предупреждение:

 format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘apr_time_t’ [-Wformat]
 

Помимо приведения. Каков правильный спецификатор формата для этого типа (apr_time_t)?

Большое спасибо за любые предложения,

Ответ №1:

APR содержит вызываемый макрос APR_TIME_T_FMT , который может делать то, что вы хотите.

При создании строки формата вы используете ее таким образом (предполагая, что она работает как макросы stdint): printf("time: %" APR_TIME_T_FMT, value);
Вы также можете просто привести значение к соответствующему типу.

Комментарии:

1. Сначала я его использовал. Но мне было интересно, есть ли спецификатор формата, который я мог бы использовать вместо этого. Спасибо.

Ответ №2:

Попробуйте:

 printf("The current time: %" APR_TIME_T_FMT "[us]n", apr_time_now());
 

Учебник.