-Werror = format: jak kompilator może wiedzieć

Napisałem ten celowo zły kod

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

kompilowanie zg++ i-Werror=format.

Kompilator podaje to bardzo imponujące ostrzeżenie:

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

O ile widzę, kompilator nie może stwierdzić, że kod jest nieprawidłowy, ponieważ ciąg formatu nie jest analizowany do czasu wykonania.

Moje pytanie: czy kompilator ma specjalną funkcję, która uruchamia printf i podobne funkcje libc, czy jest to funkcja, której mogę używać dla własnych funkcji? Literały ciągów?

questionAnswers(2)

yourAnswerToTheQuestion