-Werror = format: como o compilador pode saber

Eu escrevi este código intencionalmente errado

printf("%d %d", 1);

compilando comg++ e-Werror=format.

O compilador dá esse aviso muito impressionante:

error: format '%d' expects a matching 'int' argument [-Werror=format]

Até onde eu posso ver, não há como o compilador saber que o código está errado, porque a string de formato não é analisada até o tempo de execução.

Minha pergunta: o compilador tem um recurso especial que funciona para printf e funções libc similares, ou esse é um recurso que eu poderia usar para minhas próprias funções? Literais de string?

questionAnswers(2)

yourAnswerToTheQuestion