V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ghostsusan
V2EX  ›  问与答

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

  •  
  •   ghostsusan · 2017-04-26 11:45:50 +08:00 · 1470 次点击
    这是一个创建于 2547 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 ?

    2 条回复    2017-04-26 13:46:50 +08:00
    jmc891205
        1
    jmc891205  
       2017-04-26 12:12:34 +08:00 via iPhone   ❤️ 1
    告诉编译器传进来的数组至少有 2 个元素
    这是 c99 引入的
    ghostsusan
        2
    ghostsusan  
    OP
       2017-04-26 13:46:50 +08:00
    @jmc891205 明白了, thanks
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4317 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:28 · PVG 13:28 · LAX 22:28 · JFK 01:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.