请教一个 c 的声明问题,"uint64_t const pt[static 2]"这个 static 是什么意思?

2017-04-26 11:45:50 +08:00
 ghostsusan

wiki看到一段奇观的代码

#include <stdint.h>

#define ROR(x, r) ((x >> r) | (x << (64 - r)))
#define ROL(x, r) ((x << r) | (x >> (64 - r)))
#define R(x, y, k) (x = ROR(x, 8), x += y, x ^= k, y = ROL(y, 3), y ^= x)
#define ROUNDS 32

void encrypt(uint64_t const pt[static 2],
             uint64_t ct[static 2],
             uint64_t const K[static 2])
{
   uint64_t y = pt[0], x = pt[1], b = K[0], a = K[1];

   R(x, y, b);
   for (int i = 0; i < ROUNDS - 1; i++) {
      R(a, b, i);
      R(x, y, b);
   }

   ct[0] = y;
   ct[1] = x;
}

为什么它的方括号里面会出现一个奇怪的 static ?

1486 次点击
所在节点    问与答
2 条回复
jmc891205
2017-04-26 12:12:34 +08:00
告诉编译器传进来的数组至少有 2 个元素
这是 c99 引入的
ghostsusan
2017-04-26 13:46:50 +08:00
@jmc891205 明白了, thanks

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/357423

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX