-1

我想知道是否有可能在 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;
}
4

2 回答 2

4

您需要使用%d而不是%s

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

看看这个,它有效!

于 2013-07-09T21:10:49.423 回答
1

某些编码风格可以使您免于许多错误,包括上述错误。

在现实世界的应用程序中,您不会知道宏将是什么,因此很难在%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;
}
于 2013-07-09T21:30:51.470 回答