预处理器算法是否应该与编译的目标架构相匹配?

Eti*_*e M 3 c preprocessor language-lawyer

假设我有这个预处理器检查:

#if(-6 & 5)
    #error "No 2's complement signed int"
#endif
Run Code Online (Sandbox Code Playgroud)

如果我从二进制补码机交叉编译到二进制补码机,会发生什么情况。编译器会使用目标机器的算术,还是编译机器的算术?

谢谢

Eri*_*hil 7

#ifC 2018 6.10.1 4 表示,对于和指令中的表达式求值#elif

\n
\n

\xe2\x80\xa6 出于此令牌转换和评估的目的,所有有符号整数类型和所有无符号整数类型的行为就好像它们分别具有与标头中定义的类型intmax_t和相同的表示形式uintmax_t<stdint.h>\xe2\x80\xa6

\n
\n

这些类型当然是在程序执行期间使用的,因此它们的行为是执行环境的行为。

\n