引用宏来定义字符串

时间:2015-03-07 18:46:58

标签: c c-preprocessor

是否可以引用宏的“内容”? 类似下面的代码用于打印字符串“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;
}

1 个答案:

答案 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;
}