-
Notifications
You must be signed in to change notification settings - Fork 1
PrintfCodes
With the recent addition of attribute support for printf()-like functions, there are siginificantly more warnings from Open MPI regarding improper types being passed to opal_output() when using compilers supporting the printf format attribute. To help with the warnings, here is a list of the format types you should use for various types common in Open MPI.
You should look through source: /trunk/opal/include/opal_stdint.h to see all the macros that are available -- the ones listed below are only a small sample.
If the format is in quotes (for example, "%d"
) it can be included directly in the format string, but if it is not (PRId32
, it should be concatenated by the preprocessor, with a leading "%"
. For example:
#include "opal_stdint.h"
uint32_t foo = 1;
long bar = 1;
printf("foo: %" PRIu32 ", bar: %ld\n", foo, bar);
|| type || format || notes ||
|| int32_t
|| PRId32
|| note 1 ||
|| uint32_t
|| PRIu32
|| note 1 ||
|| int64_t
|| PRId64
|| note 1 ||
|| uint64_t
|| PRIu64
/ PRIx64
|| note 1, use u
if an unsigned variable, x
if a remote address ||
|| void*
|| PRIxPTR
/ PRIuPTR
|| Cast to (uintptr_t)
||
|| size_t
|| PRIsize_t
|| Might need to cast to unsigned long
||
1 Not yet fully portable, but should work on Linux, Mac OS X, recent BSDs, and Solaris without problem (ticket trac ticket 869).