stdint.h中这个块的用途是什么(来自newlib)?
#if defined(__GNUC__) && \
( (__GNUC__ >= 4) || \
( (__GNUC__ >= 3) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ > 2) ) )
/* gcc > 3.2 implicitly defines the values we are interested */
#define __STDINT_EXP(x) __##x##__
这个宏稍后在标题中用于整数比较,但我不确定它应该如何评估。例如:
#if __STDINT_EXP(LONG_MAX) > 0x7fffffff
答案 0 :(得分:3)
##
是用于连接令牌的cpp(C预处理器)运算符,即
#if __STDIN_EXP(LONG_MAX) > 0x7fffffff
评估为
#if __LONG_MAX__ > 0x7fffffff
第一步。
答案 1 :(得分:2)
##
运算符意味着“连接”到C预处理器,因此该行等效于:
#if __LONG_MAX__ > 0x7fffffff
如果您真的想知道给定计算机上发生了什么,请通过预处理器运行并查找。
答案 2 :(得分:1)
在预处理器##
中将两段文本连接成一个更大的标记。这个特殊的宏在标识符的每一边都打了一个下划线,所以如果你使用的是gcc 3.2或更高版本:
#if __STDINT_EXP(LONG_MAX) > 0x7fffffff
变成这样:
#if __LONG_MAX__ > 0x7fffffff