gpt4 book ai didi

c - 检测 C 编译器是否支持语句表达式

转载 作者:行者123 更新时间:2023-12-02 11:58:33 25 4
gpt4 key购买 nike

有没有办法检测编译器(我有一个当前的 GCC 有它们,而一个老式的 clang 没有)是否实现了语句表达式,这样我就可以做这样的事情:

#ifdef NO_COMPOUND_STATEMENTS
#define MIN(a,b) ((a)<=(b) ? (a):(b))
#define MAX(a,b) ((a)>=(b) ? (a):(b))
#else
#define MIN(a,b) ({ __typeof__ (a) _a=(a); __typeof__ (b) _b=(b); _a<_b ? _a : _b; })
#define MAX(a,b) ({ __typeof__ (a) _a=(a); __typeof__ (b) _b=(b); _a>_b ? _a : _b; })
#endif

最佳答案

正如 AnT 在他们的回答中所说,它们不是标准的一部分。不幸的是,我也找不到 GCC 中功能测试宏的任何证据,因此最好的选择是检查以确保您使用的是 C 标准和 GCC 版本的 gnu 变体3 或更高版本(添加语句表达式时)

#if !__STRICT_ANSI__ && __GNUC__ >= 3
/* use statement expressions */
#else
/* use... something else? */
#endif

关于c - 检测 C 编译器是否支持语句表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41021765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com