假设我有一个预处理器判断:
#if(-6 & 5)
#error "No 2's complement signed int"
#endif
如果我从2的补码机交叉编译到1的补码机,会发生什么.编译器是使用目标机器的算法,还是使用编译机器的算法?
谢谢
假设我有一个预处理器判断:
#if(-6 & 5)
#error "No 2's complement signed int"
#endif
如果我从2的补码机交叉编译到1的补码机,会发生什么.编译器是使用目标机器的算法,还是使用编译机器的算法?
谢谢
C 2018 6.10.1 4规定,对于#if
和#elif
指令中的表达判断:
…为了进行此令牌转换和求值,所有有符号整数类型和所有无符号整数类型的行为就好像它们分别与头
<stdint.h>
中定义的类型intmax_t
和uintmax_t
具有相同的表示形式一样…
这些类型当然是在程序执行期间使用的,因此它们的行为与执行环境相同.