【发布时间】:2024-01-21 11:18:01
【问题描述】:
他们说 c 中的宏从不检查数据类型,它只是将左侧替换为右侧。那为什么人们将 0x01u 明确定义为可以简单地说为 0x01 呢?
【问题讨论】:
-
在使用宏的地方进行检查
-
宏(预处理器)不进行类型检查;当使用扩展宏的结果时,编译器会这样做。
-
"...宏从不进行类型检查" - 这可能意味着不止一件事。澄清一下,您具体要问什么。
-
谢谢,Bernd Elkemann 和 Jonathan Leffler。我明白了你的意思,所以在我的宏被 0x01u 替换的代码中,它将被视为无符号整数,而对于 0x01,它被简单地视为有符号整数。
-
这个问题还不错。 Bernds & Jonathans cmets 会是一个很好的答案。