在类似Object的宏中,宏的名称可以用作常规宏,也可以用作c代码中的字符串
#define MAX 0x1001
#define ANNE 0x1002
#define LENE 0x1003
void main()
{
printf("%s is the name and number is %d ",MAX, MAX);
}
答案 0 :(得分:4)
是
#define MAX 0x1001
#define EXPLAIN_MACRO_INT(x) \
printf("%s is the name and the number is %d\n", #x, x);
小心传递给此_INT宏的参数。这是为了打印整数。类似地为其他类型编写宏。
用法:
EXPLAIN_MACRO_INT(MAX)
输出:
MAX是名称,数字是4097
或者如果您想使用它
printf("%s is the name and the number is %d\n", EXPLAIN_MACRO(MAX));
然后
#define EXPLAIN_MACRO(x) #x, x
第二个版本可以与所有类型的参数一起使用 - 但现在你必须注意printf中的格式。
输出相同:
MAX是名称,数字是4097
答案 1 :(得分:0)
https://gcc.gnu.org/onlinedocs/cpp/Stringification.html
使用字符串化:
#define MAX 0x1001
#define xstr(s) str(s)
#define str(s) #s
#define foo 4
printf("%s is the name and number is %d ", str(MAX), MAX);
// note xstr(MAX) would expand to "1234"