Си: как правильно говорить поле структуры или элемент структуры?
В русскоязычной литературе очень часто встречается "поле структуры". В K&R в оригинале написано "member", в русском переводе - "поле". Но ведь "поле" - это "field". Однажды задавал вопрос на англоязычном stackoverflow, написал "field" - меня поправили. Получается, что авторы многих наших книг ошибаются?
Ответы (2 шт):
Поле это устоявшийся термин в программировании. В англоязычной литературе также можно встретить class field. class member это более широкий термин, включающий в себя поля, методы и всё, что относится к классу(структуре). Учитывая, что в C у структур нет методов, то термины field и member равнозначны.
В стандарте языка C (текущий от 2018 года) слово "field" упоминается только в двух контекстах:
- для битовых полей (bit-field);
- при задании ширины форматированного ввода/вывода (field width).
Единственным правильным (оригинальным термином) для членов структуры является "member". В частности можно встретить такие упоминания:
1023 members in a single structure or union // 5.2.4.1 Translation limits
-
struct { char a; int b:5, c:11,:0, d:8; struct {int ee:8;} e; }The member a, and bit-fields d and e.ee are each separate memory locations
An identifer can denote an object; a function; a tag or a member of a structure, union, or enumeration ... // 6.2.1 Scopes of identifers
Ну и основное это, наверное, вот:
- A structure type describes a sequentially allocated non empty set of member objects (and, in certain circumstances, an incomplet earray), each of which has an optionally specifed name // 6.2.5 Types p.20 andpossiblydistincttype.