#define一个变量值?预处理指令

时间:2013-07-09 21:06:29

标签: c++ c c-preprocessor

我想知道是否有可能以某种方式在C / C ++中制作这样的东西:

int a = 5;
#define A a
printf("%s\n", A); // should print 5 (value of 'a' variable)

好的,这段代码给了我分段错误(Windows 7,Code :: Blocks):

#include <stdio.h>

int main()
{
    int a = 5;
    #define A a

    #if defined(A)
        printf("%d\n", A);
    #endif

    return 0;
}

2 个答案:

答案 0 :(得分:4)

您需要使用%d代替%s

printf("%d\n", A);

检查this,它有效!

答案 1 :(得分:1)

某些编码样式可以帮助您避免许多错误,包括上面的错误。

在实际应用中,您 WONT 知道宏将是什么,因此很难在 %s 之间进行选择%d

有时这不是问题,而是导致他们的信念。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 实例:

这是一种糟糕的编码风格:

#include <stdio.h>

int main()
{
    int a = 5;
    #define A a

    #if defined(A)
        printf("%d\n", A);
    #endif

    return 0;
}

这是一种可以容忍的*编码风格

int main()
{
    #ifdef WIN32
        #define a 5
    #elif defined __unix__
        #define a 6
    #endif

    int A = a;

    printf("%d\n",A);

    return 0;
}
  • 取决于您团队的编码政策


这是首选的编码风格:

int main()
{
    int A = 6;

    #ifdef WIN32
        A = 5;  // Windows hate 6 and *nix.
    #endif

    printf("%d\n",A);

    return 0;
}