gpt4 book ai didi

c - 在没有代码重复的情况下管理 C 中的不同数据类型

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

为了处理不同的数据类型,下面的代码确实有效。但是,是否有更好的方法来编写此代码而无需为不同的数据类型重复代码?

in  = (unsigned char *) calloc(pixels, bpp);
out = (unsigned char *) calloc(pixels, bpp);

if (bpp == 1)
for (x = 0; x < pixels; x++)
*(out + (x * bpp)) = *(in + (x * bpp));

if (bpp == 2)
for (x = 0; x < pixels; x++)
*(short *)(out + (x * bpp)) = *(short *)(in + (x * bpp));

if (bpp == 4)
for (x = 0; x < pixels; x++)
*(float *)(out + (x * bpp)) = *(float *)(in + (x * bpp));

if (bpp == 8)
for (x = 0; x < pixels; x++)
*(double *)(out + (x * bpp)) = *(double *)(in + (x * bpp));

感谢到目前为止的回复,对于我的表述不够清晰,我深表歉意。上面的代码片段只是我试图实现的一个例子。例如,假设我们要重新排列值的顺序:

 for (x = 0; x < pixels; x++)
*(out + (pixels - 1 - x) * bpp) = *(in + (x * bpp));

这里 memcpy() 没有帮助。基本上,我想去掉不同数据类型的重复代码,这样我就可以按照我喜欢的方式对任何数据类型的值进行排序。

最佳答案

为什么不直接使用 memcpy()

memcpy(out, in, pixels * bpp);

关于c - 在没有代码重复的情况下管理 C 中的不同数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33422313/

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