printf
recibe uno o más parámetros, el primero de los cuales es un string de formato, indicando "la plantilla" del mensaje a imprimir. Dependiendo de ese formato, la función puede esperar más parámetros, para interpolarlos según indiquen sus conversiones (las directivas que arrancan con %
como %s
o %d
).
Debido a que el comportamiento de la función cambia según ese formato que reciba (en particular, los accesos a memoria que se intenten realizar), usar un formato variable sin argumentos con printf
genera un warning de seguridad del compilador.
Las funciones de log de las commons sufren un problema similar, sólo que no generan el warning (en lo que podríamos considerar un bug de la biblioteca).