gpt4 book ai didi

C - 在#defines 中表示二进制

转载 作者:太空宇宙 更新时间:2023-11-04 00:59:55 24 4
gpt4 key购买 nike

下面的代码片段按原样工作,但如果我取消注释第一个 #define 并注释第二个,编译器会提示在赋值语句中期待 ')'。以为它可能需要 Actor 阵容,但这无济于事。请指出我愚蠢的疏忽。

谢谢,jh

//#define SMI_READ  (0b10 << 10)
#define SMI_READ (0x2 << 10)
...
command |= SMI_READ;

最佳答案

一般来说,要回答这样的问题,我们需要查看错误消息的完整且未经编辑文本,如果您提供完整程序 我们可以尝试自己编译。 (在您看来,错误消息似乎毫无用处,但通常只有当您知道如何像编译器工程师一样思考时,它们才有意义。)

但是,在这种情况下,我可以做出高可信度的猜测,因为这两个宏之间的唯一区别是不起作用的那个使用二进制数,0b10,而有效的是使用十六进制数 0x2。二进制数不是任何版本的 C 标准的一部分,尽管它们是一种常见的扩展。因此,我推断您的编译器不支持它们,并且在遇到它们时给出了不清楚的错误消息。

关于C - 在#defines 中表示二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44377937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com