Как распечатать "apr_uint32_t"?
Мой вопрос: как распечатать "pMessage","aiLength","szDataSize"?
EventInfo* pEventInfo
typedef struct {
char* pMessage;
SocketHeader* pSocketHeader;
PipeHeader* pPipeHeader;
} EventInfo;
typedef struct {
apr_uint32_t aiLength;
} PipeHeader;
typedef struct {
apr_uint32_t szDataSize;
} SocketHeader;
Что такое "apr_uint32_t"?
5 ответов
Пока я думаю, что ответ @pilcrow - использование спецификаторов преобразования строки формата C99 в <inttypes.h>
- вероятно, самый элегантный, unsigned long
тип гарантированно должен быть не менее 32 бит, так что вы можете просто использовать %lu
спецификатор с приведением:
printf("%lu\n", (unsigned long) value);
Который не требует C99. Это не большая проблема сегодня, но IIRC, APR, также не предполагает компилятор C99, иначе они бы не потрудились накатывать свои собственные "точные" типы.
apr_uint32_t
является переносимым 32-разрядным целым числом без знака из проекта Apache Portable Runtime.
Вы должны отформатировать его так же, как если бы вы печатали собственное целое число без знака, которое, как вы наверняка знаете, имеет ширину 32 бита: используйте спецификатор формата PRIu32, как рекомендовано в этом ответе.
(Как примечание, другие переносимые типы apr поставляются со своими специфичными для платформы спецификаторами printf, например, apr_uint64_t
имеет соответствующий APR_UINT64_T_FMT. Однако этого типа нет.)
apr_uint32_t - это unsigned int, поэтому вы должны знать, что делать дальше.
Попробуй это
EventInfo eventInfo;
SockHeadExample sHead;
PipeHeader pipeHeader
printf("%s", eventInfo.pMessage); // <- pMessage
printf("%u", sHead.szDataSize); // <- szDataSize
printf("%u", pipeHeader.aiLength); // <- aiLength
За работой
apr_uint32_t
является unsigned int
это typedef
библиотека Apache
Ссылка
На самом деле apr_uint32_t является typedef unsigned int
http://www.cplusplus.com/reference/cstdio/printf/ для спецификаторов формата printf().
Ссылайтесь на этот код http://svn.haxx.se/dev/archive-2004-04/att-0788/intl.c
еще один образец http://src.gnu-darwin.org/ports/sysutils/ftwin/work/ftwin-0.8.0/src/checksum.c.html