gpt4 book ai didi

c++ - 内存块之间的逻辑操作?

转载 作者:太空宇宙 更新时间:2023-11-04 05:30:25 25 4
gpt4 key购买 nike

我想要或两大块内存......但它不起作用

假设我有三个 char * bm、bm_old 和 bm_res。

#define to_uint64(buffer,n) {(uint64_t)buffer[n] << 56 | (uint64_t)buffer[n+1] << 48 |        (uint64_t)buffer[n+2] << 40  | (uint64_t)buffer[n+3] << 32 | (uint64_t) buffer[n+4] << 24 | (uint64_t)buffer[n+5] << 16 | (uint64_t)buffer[n+6] << 8  | (uint64_t)buffer[n+7];}

...

for (unsigned int i=0; i<bitmapsize(size)/8; i++){
uint64_t or_res = (to_uint64(bm_old,i*8)) | (to_uint64(bm,i*8));
memcpy(bm_res+i*sizeof(uint64_t), &or_res, sizeof(uint64_t));
}

bm_res 不正确!

有什么线索吗?

谢谢,

阿米尔。

最佳答案

to_uint64 的定义括在圆括号 () 中而不是大括号 {} 中,并去掉末尾的分号。使用 #define 创建一个宏,其文本在任何使用它的地方都被逐字插入,而不是实际的函数,因此您试图 | - 将两个 block 而不是那些 block “返回值。”

关于c++ - 内存块之间的逻辑操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7562684/

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