【问题标题】:Right order #define macro in C/C++ [duplicate]C / C ++中的正确​​顺序#define宏[重复]
【发布时间】:2016-05-11 19:13:38
【问题描述】:

我尝试像这样保存变量名:

#define TEST someVariable
#define makeString(x) #x

int main(int argc, char *argv[])
{
    char TEST[] = makeString(TEST);
    printf("%s    %s\n", TEST, makeString(TEST));
    return 0;
}

输出是:

appden4ik@appDen4ik:/opt/preprocessor/Debug$ ./preprocessor 
TEST    TEST'

我想要下一个输出:

someVariable      someVariable

我哪里错了?

【问题讨论】:

    标签: c c-preprocessor


    【解决方案1】:
    #include <stdio.h>
    
    
    #define TEST variable
    #define makeStr(x) #x
    #define makeString(x) makeStr(x)
    
    int main(int argc, char *argv[]) {
        char TEST[] = makeString(TEST);
        printf("%s    %s\n", TEST, makeString(TEST));
        return 0;
    }
    

    这有帮助

    【讨论】:

    • 不错!也许尝试解释为什么您的解决方案有效,而第一个无效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    相关资源
    最近更新 更多