Пример, как идеология педантичности стандарта MISRA C защищает от ошибокВ C литерал 0 можно присваивать как численным типам, так и указателю (вместо NULL). Правило MISRA C 2012/2023 11.9, которое говорит, что нужно использовать именно NULL, может казаться избыточным. Например, здесь:
typedef struct FT_Outline_
{
short n_contours; /* number of contours in glyph */
short n_points; /* number of points in the glyph */
FT_Vector* points; /* the outline's points */
char* tags; /* the points flags */
short* contours; /* the contour end points */
int flags; /* outline masks */
} FT_Outline;
....
static const FT_Outline null_outline = { 0, 0, 0, 0, 0, 0 };
V2648 Use NULL macro instead of literal zero for pointers.
Если заменить некоторые 0 на NULL никому лучше не станет.
static const FT_Outline null_outline = { 0, 0, NULL, NULL, NULL, 0 };
Правило, кажется, просто украшательством стиля написания кода. Лишнее ограничение при написании кода... Какой практический прок? Давайте посмотрим, как такое предупреждение помогает выявить реальную ошибку.
typedef char FAR * FAR * png_charpp;
....
png_size_t
png_check_keyword(...., png_charpp new_key)
{
....
if (key_len > 79)
{
png_warning(....);
new_key[79] = '\0'; //