是否可以引用宏的“内容”? 类似下面的代码用于打印字符串“AAA”。
#include <stdio.h>
#include <stdlib.h>
#define _L 5
#define _QUOTE(a) #a
#define _TEXT AAA
#define _STRINGAAA _QUOTE(_TEXT)
const char STRINGAAA[ _L ] = _STRINGAAA;
int main(void)
{
printf( "%s\n", STRINGAAA );
return EXIT_SUCCESS;
}
答案 0 :(得分:1)
您需要使用第二组宏来强制进行字符串化之前的宏参数替换:
#include <stdio.h>
#include <stdlib.h>
#define _L 5
#define _XQUOTE(a) #a
#define _QUOTE(a) _XQUOTE(a)
#define _TEXT AAA
#define _STRINGAAA _QUOTE(_TEXT)
const char STRINGAAA[ _L ] = _STRINGAAA;
int main(void)
{
printf( "%s\n", STRINGAAA );
return EXIT_SUCCESS;
}