我想知道是否有可能以某种方式在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;
}
答案 0 :(得分:4)
答案 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;
}