Concatenate int to string using C Preprocessor

前端 未结 3 1220
离开以前
离开以前 2020-11-28 22:25

I\'m trying to figure out how I can concatenate a #define\'d int to a #define\'d string using the C Preprocessor. My compiler is

相关标签:
3条回答
  • 2020-11-28 22:52

    A working way is to write MY_FILE as a parametric macro:

    #define MY_FILE(x,y) "/home..." #x #y
    

    EDIT: As noted by "Lindydancer", this solution doesn't expand macros in arguments. A more general solution is:

    #define MY_FILE_(x,y) "/home..." #x #y
    #define MY_FILE(x,y) MY_FILE_(x,y)
    
    0 讨论(0)
  • 2020-11-28 23:03

    You can do that with BOOST_PP_STRINGIZE:

    #define MAJOR_VER 2
    #define MINOR_VER 6
    #define MY_FILE "/home/user/.myapp" BOOST_PP_STRINGIZE(MAJOR_VER) BOOST_PP_STRINGIZE(MINOR_VER)
    
    0 讨论(0)
  • 2020-11-28 23:05

    Classical C preprocessor question....

    #define STR_HELPER(x) #x
    #define STR(x) STR_HELPER(x)
    
    #define MAJOR_VER 2
    #define MINOR_VER 6
    #define MY_FILE "/home/user/.myapp" STR(MAJOR_VER) STR(MINOR_VER)
    

    The extra level of indirection will allow the preprocessor to expand the macros before they are converted to strings.

    0 讨论(0)
提交回复
热议问题