
在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 ?
1 jmc891205 2017-04-26 12:12:34 +08:00 via iPhone 告诉编译器传进来的数组至少有 2 个元素 这是 c99 引入的 |
2 ghostsusan OP @jmc891205 明白了, thanks |