【发布时间】:2013-05-31 16:20:44
【问题描述】:
目前,我有一个很像这样的场景:
#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++。
标签: c gcc c-preprocessor typeof