__attribute__((format(printf, 1, 2))) for MSVC?
c, c++, visual-c++
Solution
While GCC checks format specifiers when -Wformat is enabled, VC++ has no such checking, even for standard functions so there is no equivalent to this `__attribute__` because there is no equivalent to -Wformat.
I think Microsoft's emphasis on C++ (evidenced by maintaining ISO compliance for C++ while only supporting C89) may be in part the reason why VC++ does not have format specifier checking; in C++ using `<iostream>` format specifiers are unnecessary.
Problem
With GCC, I can specify `__attribute__((format(printf, 1, 2)))` , telling the compiler that this function takes vararg parameters that are printf format specifiers. This is very helpful in the cases where I wrap e.g. the vsprintf function family. I can have `extern void log_error(const char *format, ...) __attribute__((format(printf, 1, 2)));` And whenever I call this function, gcc will check that the types and number of arguments conform to the given format specifiers as it would for printf, and issue a warning if not. Does the Microsoft C/C++ compiler have anything similar ?