数组长度的类似 C 预处理器的 #define 的等价物是什么?

Olo*_*lof 8 rust

我正在编写一个测试,以查看从流中读取时不同缓冲区大小的时间差异。与其在代码中的任何地方更改缓冲区大小,不如让一些预处理器为我做这件事,这样我只需要在一个地方更改值。

我正在考虑的一个例子是编写 C 宏define BUFFER 1024,并在创建数组时使用它来定义大小。

Fre*_*ios 7

使用const以满足您的需要:

const BUFFER: usize = 512;
Run Code Online (Sandbox Code Playgroud)

然而,这不是预处理器:正如 underscore_d 的评论所说,预处理器的使用是一种非常古老的机制。它已在 Rust 中替换为:

  • const 在文字值的情况下;
  • 宏,生成代码。

您可以将 Rust 的const关键字理解为“在编译时评估”。在编译时评估的(可能)传入函数const也将被标记为。

此外,即使在 C 中,使用预处理器创建编译时常量也不是最佳实践

  • @Olof 没错。Rust 中的 `const` 表示“在编译时已知”。我编辑了我的答案以添加它。 (2认同)