2011-09-07 60 views
0

有没有办法通过预处理器检查变量的类型?
其实我想要做这样的事情:通过预处理器指令检查变量的类型

//test.c 
int main(void) 
{ 
    TYPE a=6; 
#if TYPE==int 
    printf("%d\n",a); 
#elif TYPE==float 
    printf("%f\n",a); 
#endif 
} 

现在我用它作为:

gcc -o test -D TYPE=float test.c 

但它无法正常工作。 TYPE总是与int匹配,并根据%d给出结果。
请帮我解决这个问题。

回答

1

预处理器无法比较这样的字符串。见this FAQ。做到这一点的方法是#定义选项,并有一个例子可以帮助你。