问个关于宏的小疑点

问个关于宏的小问题#includestdio.h#define D a#define F bint main(){printf(DF)return 0}这个程序

问个关于宏的小问题
#include<stdio.h>
#define D "a
#define F b"
int main()
{
printf(DF);
return 0;
}
这个程序有什么不对,我觉得替代之后是printf("ab");挺对啊。宏不就是简单的不做检查的替代吗?

[解决办法]
按lz这个思路

#define p s

那么printf不就变成srintf了