我正在尝试做一些概念上与此类似的事情,但似乎无法让它工作(最后显示错误)有什么想法吗?
#include <stdio.h>
int main( int argc , char const *argv[] )
{
int abc_def_ghi = 42;
#define SUFFIX ghi
#define VAR(prefix) prefix##_def_##SUFFIX
printf( "%d\n" , VAR(abc) );
return 0;
}
// untitled:8: error: ‘abc_def_SUFFIX’ undeclared (first use in this function)
最佳答案
您只需要额外的间接访问:
#include <stdio.h>
int main( int argc , char const *argv[] )
{
int abc_def_ghi = 42;
#define SUFFIX ghi
#define VAR3(prefix, suffix) prefix##_def_##suffix
#define VAR2(prefix, suffix) VAR3(prefix, suffix)
#define VAR(prefix) VAR2(prefix, SUFFIX)
printf( "%d\n" , VAR(abc) );
return 0;
}
虽然看起来多余,但其实不然。
关于C 编程 : Preprocessor, 宏作为标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1767683/