int_max c++ macros include

c++ - int_max - ¿Cómo usar una macro en una directiva#include?



int_max c++ (1)

Estoy confundido sobre cómo usar macros en la directiva #include . He hecho esto:

#include "../../../../GlobalDefintions.h" #include "../../../../lib/libc++/" ARCH_FAMILY_S "/" ARCH_S "/stkl/printkc/printkc.h"

GlobalDefintions.h :

#ifndef _GlobalDefintions_ #define _GlobalDefintions_ /*Architecture Information Start*/ #define ARCH i386 #define ARCH_FAMILY x86 #define ARCH_S "i386" #define ARCH_FAMILY_S "x86" /*Architecture Information End*/ #endif /*_GlobalDefintions_*/

Pero lo que eso me da es esto:

kernel.c++:24:88: fatal error: ../../../../lib/libc++/: No such file or directory #include "../../../../lib/libc++/" ARCH_FAMILY_S "/" ARCH_S "/stkl/printkc/printkc.h"

¿Hay alguna forma de agregar ARCH_FAMILY_S y ARCH_S a mi cadena de directiva #include ?


Puede usar una serie de macros para crear su archivo de inclusión. Lamentablemente, no puedo pensar en ninguna forma más limpia (en origen) de hacer esto. Esto funciona para arm-eabi-none-gcc v5.4.1.

#define LIBC_DIR ../../../../lib/libc++/ #define STRINGIFY_MACRO(x) STR(x) #define STR(x) #x #define EXPAND(x) x #define CONCAT(n1, n2) STRINGIFY_MACRO(EXPAND(n1)EXPAND(n2)) #define CONCAT5(n1, n2, n3, n4, n5) STRINGIFY_MACRO(EXPAND(n1)EXPAND(n2)EXPAND(n3)EXPAND(n4)EXPAND(n5)) // Concatenate the five elements of your path. // Of course, this can be simplified if there is only a prefix and a suffix // that needs to be added and the ARCH_FAMILY, /, and ARCH are always present // in the macro-generated #include directives. #include CONCAT5(LIBC_DIR,ARCH_FAMILY,/,ARCH,/stkl/printkc/printkc.h)