#include<stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf(,))); 宏h(a) 是g(a),没有#,所以需要进行宏展开 printf(,))); //宏g(a) 有#,所以不展开 ; } 如何展开宏函数的规则:在展开当前宏函数时,如果形参有#或##则不进行宏参数的展开,否则先展开宏参数,再展开当前宏. 万能的stackoverflow http://stackover…