如何样将宏定义的字符串和普通字符串拼接

怎么样将宏定义的字符串和普通字符串拼接?
例如这样:

#define STR "is a %s"
...
printf("This "STR" !!!!", " str");


上面这种写法在VS2008里面可以正常编译,但是在g++ 4.4.7中,报错:error: expected ‘)’ before STR

请问linux下面该怎么写呢?谢谢
------解决思路----------------------
如何样将宏定义的字符串和普通字符串拼接
------解决思路----------------------
呵呵,宏会自动展开的
------解决思路----------------------
如何样将宏定义的字符串和普通字符串拼接
------解决思路----------------------
接分如何样将宏定义的字符串和普通字符串拼接
------解决思路----------------------
如何样将宏定义的字符串和普通字符串拼接
------解决思路----------------------
引号作为字符串要用:\" 表示
------解决思路----------------------
如何样将宏定义的字符串和普通字符串拼接