Yang Tse wrote: > When the statement involved is actually a printf-family one some > compilers will warn us about mismatched usage. But they will miss our > infof() and failf() macros (actually Curl_infof() and Curl_failf() > functions) and others which also use printf-style format strings. > > Manually verifying all usages of these is prohibitively > time-consuming, and even if done, later changes of variables data > types which do not verify if used in print-like statements would bring > breakage back again. > > So. I wonder if someone has some some neat idea or code that could be > used to verify if the printf-style format string used matches the one > required for the data type being used or not.
Look up GCC's __attribute__((__format__(__printf__(...))). It does exactly what you asked for, assuming the format string styles are the same as the platform's own printf. It won't work on non-GCC platforms, but building on GCC platforms is usually enough to ensure the code is checked. The attribute is available starting from GCC 2.7. From GCC 3.3 you can add __attribute__((__nonnull__(...))) too. -- Jamie ------------------------------------------------------------------- List admin: http://cool.haxx.se/list/listinfo/curl-library Etiquette: http://curl.haxx.se/mail/etiquette.html
