gpt4 book ai didi

c - 尽管 block 相似,bcmp() 返回 1

转载 作者:行者123 更新时间:2023-11-30 17:25:31 30 4
gpt4 key购买 nike

我正在做一个bcmp(&v6_addr1,&v6_addr2,sizeof(v6_addr1))

(gdb) p v6_addr2
$15 = {u = {b = "0\001", '\000' <repeats 12 times>, "\002\061", w = {304, 0,
0, 0, 0, 0, 0, 12546}, l = {304, 0, 0, 822214656}}}

(gdb) p v6_addr1
$16 = {u = {b = "0\001", '\000' <repeats 12 times>, "\002\061", w = {304, 0,
0, 0, 0, 0, 0, 12546}, l = {304, 0, 0, 822214656}}}

(gdb) p bcmp(&v6_addr1,&v6_addr2,sizeof(v6_addr1))
$18 = 1

gdb 中的 block 似乎是相同的

但是 bcmp 返回值为 1..可能是什么原因?

最佳答案

如果结构包含填充,这些位置的值可能会有所不同。如果您检查这些值,这不会显示在调试器中,因为它只显示值。

您可以通过examining来验证这一点实际内存内容。

不要bcmp。来自手册:

The bcmp() function compares the two byte sequences s1 and s2 of length n each.

请参阅此解决方案:How do you compare structs for equality in C?

关于c - 尽管 block 相似,bcmp() 返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27058544/

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