gpt4 book ai didi

c++ - 带有内存大小定义的 header

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:25:40 29 4
gpt4 key购买 nike

是否有标准的 C/C++ header ,其中包含字节、千字节、兆字节等的定义?我不想自己定义。在我看来这很脏。

例子:

if (size > MEGABYTE)
{ ... }

最佳答案

不,没有这样的标准定义。可能是因为附加值会很小。

你经常会看到这样的东西:

#define KB(x)   ((size_t) (x) << 10)
#define MB(x) ((size_t) (x) << 20)

这里使用左移来表示操作x * 210x * 1,024 相同,对于220 即 1,024 * 1,024,即 1,048,576。这“利用”了千字节、兆字节等经典定义在计算中使用 2 的幂这一事实。

转换为 size_t 很好,因为这些是尺寸,我们希望它们可以随时用作参数,例如malloc().

使用上面的代码,在代码中使用它们变得非常实用:

unsigned char big_buffer[MB(1)];

或者 如果( statbuf.st_size >= KB(8) ) { printf("文件为 8 KB(或更大)\n");

但您当然可以使用它们来进一步定义:

#define MEGABYTE MB(1)

关于c++ - 带有内存大小定义的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16031470/

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