16 ноября 2015, 11:38 |
При разработке для встраиваемых систем зачастую приходится писать свои реализации printf и подобных функций. Однако для самописных функций не работает опция "-Wformat": проверка вызовов на корректность аргументов (сверка количества и типов аргументов со строкой форматирования). Для решения этой проблемы в GCC существует специальный атрибут функции "format". Пример применения:
Первым аргументом атрибута идёт тип проверки (__printf__, __scanf__, __strftime__, __strfmon__), второй - номер аргумента с форматом (нумерация с 1), третий - номер аргумента с которого начинается список аргументов (...).
int fmt( void (*put)(char,void**), void *putarg, const char *fmt, ... )
__attribute__ ((format (__printf__, 3, 4)));
Первым аргументом атрибута идёт тип проверки (__printf__, __scanf__, __strftime__, __strfmon__), второй - номер аргумента с форматом (нумерация с 1), третий - номер аргумента с которого начинается список аргументов (...).
Комментарии RSS