- 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 的未来发展。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。