目前,我有一个很像这样的场景:
#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 ??)
或者,我应该在这里使用另一种表达方式吗?