C 的大型数组大小调查

  • 2024 年 11 月 06 日,C2y 新增一个操作符,可计算数组元素个数(非字节数),源于 Alejandro Colomar 在 N3369 中的努力,已在明尼阿波利斯标准化会议中被投票通过。但对于其命名存在疑问,故进行调查。
  • 该操作符核心为SIZE_KEYWORD宏,在不同语言中有多种名称,如 BSD 风格 C 中的nitems()、C 中的ARRAY_SIZE()等。此次调查是关于将其作为语言内操作符的命名,而非基于库的宏命名。
  • 调查围绕两个选择:获取操作符/关键字的使用模式和操作符/关键字的拼写。使用模式有三种:

    • 下划线加大写字母_Keyword并在新头文件中定义宏,如_Static_assert等,可避免与用户或标准宏冲突,示例代码为#include <stdkeyword.h>
    • 下划线加大写字母_Keyword且头文件中无宏,如_Generic,这种方式不提供友好拼写,示例代码为// no header
    • 直接使用小写关键字,如static_assert(keyword(barkbark) == 6)等,这种方式在 C 中不常见,常因避免破坏现有代码而采用其他方式。
  • 关键字拼写有六种:

    • lenof / _Lenof:拼写简短,易输入,受 C 从业者和 Python 开发者喜爱,但处理字符串时可能导致“混淆”。
    • lengthof / _Lengthof:在 Chris Bazley 的调查中获胜,拼写完整,虽作者反对但在 C 委员会和部分使用者中较受欢迎。
    • countof / _Countof:比length短,在全球代码库中使用广泛,包括微软 C 库,但与 C++的count概念冲突。
    • nelemsof / _Nelemsof:是 BSD 中nitems()的替代拼写,强调元素个数,不易与字符串相关问题关联。
    • nelementsof / _Nelementsof:是nelemsof的长拼写,作者偏好,可直接成为 C 核心语言的关键字。
    • extentof / _Extentof:在明尼阿波利斯会议中受支持,可用于多维数组,需配合宏版本引入。
  • 调查链接为https://www.allcounted.com/s?did=qld5u66hixbtj&lang=en_US,末尾有可选问题可让用户更精确地选择拼写和使用机制组合,鼓励用户行使民主权利参与 C 的未来发展。
阅读 15
0 条评论