C++11 有`decltype`,C23 有`typeof`,如果同一个头文件需要同时给 C23 和 C++使用,那么需要自动推导类型的语句应该怎么选?

是应该加设一个 macro 分开处理?对于 C23 就用 typeof ,对于 C++就用 decltype 。<br />
又或者在 C23 环境用`#define`把 decltype 替换成 typeof ?

然后还有`typeof_unqual`,C++是用模板的形式来做的,没记错的话应该等价于`std::remove_cv_t<decltype(var)>`,是不是只能用 macro 分开处理了?
举报· 53 次点击
登录 注册 站外分享
2 条回复  
ysc3839 小成 2024-5-19 23:03:31
#ifdef __cplusplus
agagega 小成 2024-5-20 00:48:03
直接用 GCC 的__typeof__扩展(如果你确信只会用 GCC 或者 Clang 编译的话): https://gcc.gnu.org/onlinedocs/gcc/Typeof.html
返回顶部