Правило 21.1 в MISRA C 2012 гласит, что
# define и #undef не должны использоваться для зарезервированного идентификатора или зарезервированного имени макроса
ThisПравило применяется к идентификатору или макросу, начинающимся с подчеркивания
Обоснование :
Удаление или изменение значения зарезервированного макроса может привести к неопределенному поведению
Я не понимаю, почему имя макроса не должно начинаться с символа подчеркивания, даже если это не зарезервированный макрос?Например, в моих заголовочных файлах:
#ifndef __MY_HEADER_
#define __MY_HEADER_
или в библиотеке, которую я использую:
#define __I volatile const
Должен ли я изменить весь свой код и библиотеку, которую я использую (чтобольшая библиотека), чтобы соответствовать этому правилу или есть более простое решение?