¿Las macros ocupan memoria? ¿O es una macro similar a una referencia, que simplemente representa un alias para una constante y no asigna memoria?
En realidad, esta pregunta debe dividirse en dos partes:
Las macros sirven como comandos de preprocesamiento y no asignan memoria. Su comprensión de "referencia" y "alias" es correcta.
Las macros se procesan en tiempo de compilación. No hay macros en el archivo ejecutable generado, por lo que las macros no ocupan memoria.
Los programas en C se compilan reemplazando los nombres de las macros con cadenas. Este proceso se llama "macroexpansión".
Después de la "expansión de macro", si el contenido de la definición de macro necesita asignar memoria depende del resultado del reemplazo de macro.
Pero esta no es la memoria que ocupa la macro.
Así que la respuesta a tu pregunta "¿Las macros ocupan memoria?" es no.