#define

在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串

凡宏定义里有‘#’和‘##’的地方宏参数不再展开”;而h(f(1,2))展开内部的f(1,2),是因为:“要解决这个问题只需多加一层中间转换层

#include <stdio.h>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)

int main()
{
printf("%s\n", h(f(1,2)));
printf("%s\n", g(f(1,2)));
return 0;
}

本题的输出是12和f(1,2),

posted on 2012-02-23 18:08  一指流砂  阅读(361)  评论(0编辑  收藏  举报

导航