小编jun*_*ghe的帖子

为什么char与signed char或unsigned char不兼容?

我发现C99标准有一个语句,它拒绝类型char和signed char/unsigned char类型之间的兼容性.

C99标准注35:

在limits.h中定义的CHAR_MIN将具有值0或SCHAR_MIN之一,这可用于区分这两个选项.无论做出何种选择,char都是与其他两种类型不同的类型,并且与两者都不兼容.

我的问题是为什么委员会否认兼容性?理由是什么?如果char与signed char或unsigned char兼容,会发生什么可怕的事情吗?

c compatibility char

9
推荐指数
2
解决办法
2094
查看次数

宏名称和替换列表相同

我找到了一些预处理指令,其中宏名称和替换列表是相同的.例如,gcc提供的stdbool.h中的一些预处理指令.

#else /* __cplusplus */

/* Supporting <stdbool.h> in C++ is a GCC extension.  */
#define _Bool   bool
#define bool    bool
#define false   false
#define true    true

#endif /* __cplusplus */
Run Code Online (Sandbox Code Playgroud)

我不明白为什么程序员编写这些预处理指令.它们没用,替换会浪费时间.我知道这不会导致无限递归.如何避免无限递归?C标准中的相关规定是什么?

c++ macros replace

3
推荐指数
1
解决办法
236
查看次数

标签 统计

c ×1

c++ ×1

char ×1

compatibility ×1

macros ×1

replace ×1