一个和宏#if相关的有关问题

一个和宏#if相关的问题。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MY_CONTENT "123hello123"

#define SEARCH(TARGET, CONTENT)   \
({int ret = 0; do {               \
    if (strstr(CONTENT, TARGET))  \
    ret = 1;                  \
else                          \
    ret = 0;                  \
} while (0);  ret;})


int main()
{
#if (SEARCH("hello", MY_CONTENT))
    printf("I found hello\n");
#else
printf("I am so sad\n");
#endif

}


上面是我写的C代码,我是希望通过这个宏函数SERACH来决定自己编译的代码。
但是用GCC编译时,提示下面的错误:
gg.c:18:32: error: token "{" is not valid in preprocessor expressions


不知道哪位高手能指点一下,分数不多,还请见谅。
------解决方案--------------------
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。gcc加-E

------解决方案--------------------
引用:
我用这个命令编译了一下
[code=c]gcc -o test test.c -ep -p -E/code]

但是没有看到有一个 .i 的文件生成,是我的命令行有问题?

你不是用 -o 指定生成的文件叫 test 了么?