Redefining NULL

Estoy escribiendo el código C para un sistema donde la dirección 0x0000 es válida y contiene E / S de puerto. Por lo tanto, cualquier posible error que acceda a un puntero NULL permanecerá sin ser detectado y al mismo tiempo causará un comportamiento peligroso.

Por esta razón, deseo redefinir NULL para que sea otra dirección, por ejemplo, una dirección que no sea válida. Si accidentalmente accedo a dicha dirección, obtendré una interrupción de hardware donde puedo manejar el error. Tengo acceso a stddef.h para este compilador, por lo que puedo alterar el encabezado estándar y redefinir NULL.

Mi pregunta es: ¿entrará en conflicto con el estándar C? Por lo que puedo decir de 7.17 en el estándar, la macro está definida por la implementación. ¿Hay algo en otra parte del estándar que indique que NULLdeb ser 0?

Otro problema es que muchos compiladores realizan una inicialización estática al establecer todo en cero, sin importar el tipo de datos. Aunque el estándar dice que el compilador debe establecer enteros en cero y punteros en NULL. Si redefiniría NULL para mi compilador, entonces sé que tal inicialización estática fallará. ¿Podría considerar eso como un comportamiento incorrecto del compilador aunque altere audazmente los encabezados del compilador manualmente? Porque sé con certeza que este compilador en particular no accede a la macro NULL cuando se realiza la inicialización estática.

Respuestas a la pregunta(7)

Su respuesta a la pregunta