C Macro - Dynamic # include

Estoy tratando de descubrir cómo construir una cadena variable para la instrucción #include usando GCC.

La idea es que para cada módulo fuente que he escrito, quiero incluir como encabezado, un @ generado dinámicamenC source, que se creó anteriormente en el proceso de compilación.

Generar este archivo no es un problema. Incluyéndolo, desafortunadamente, es.

Lo que tengo hasta ahora es (identities.h):

// identities.h

# define PASTER2(str)  #str
# define PASTER(str)   PASTER2(str ## .iden)
# define EVALUATOR(x)  PASTER(x)

# define IDENTITIES_FILE EVALUATOR(__FILE__)
# include IDENTITIES_FILE

Idealmente, esto se usaría así (main.c):

//main.c

# include "identities.h"

int main() {return 0;}

Que se expandiría en una sola pasada por el preprocesador antes de la compilación para obtener:

//main.c (preprocessed)

# include "main.c.iden"

int main() {return 0;}

Los dos niveles de indirección que estoy usando (PASTER y EVALUATOR) son el resultado deest post.

Desafortunadamente, esto no funciona y me quedo con el error:

obj/win32/dbg/main.o
In file included from main.c:1:0:
identities.h:42:1: error: #include expects "FILENAME" or <FILENAME>

Creo que el problema es que a la declaración de inclusión le faltan comillas. ¿Alguna idea?

Respuestas a la pregunta(5)

Su respuesta a la pregunta