目前,我有一种情况就像这样:使用typeof将变量声明转换为类型?
#define my_macro(var) __builtin_types_compatible_p(typeof(var), foo) ? do_something : do_something_else
然而,不经意间宏被传递此参数:
my_macro(int x);
这当然失败了,因为typeof(int x)
无效。
有没有可以在my_macro
内部应用的转换,这将允许typeof
在该表达式上工作?我不能改变传入宏的内容,只能在宏内发生。
所以,这样的事情:
#define my_macro(var) typeof(?? var ??)
或者,有没有我应该在这里使用的另一种表现?
我会说“不“,虽然显然负面的是有点难以证明;) –
@OliCharlesworth我担心......我知道我可以用'decltype'来做,但我真的很想在这里避免使用C++。 –