«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Соответствуют ли анонимные структуры в стандартном C ++?

Соответствуют ли анонимные структуры в стандартном C ++?

Опубликовано в 2025-02-26
Просматривать:645

Are Anonymous Structures in C   Standard Compliant?

являются стандартными «анонимными структурами» в C? Подробный анализ

введение

концепция «анонимных структур» в C подняла вопросы об их стандартизации и точной природе. Эта статья направлена ​​на разъяснение этих вопросов путем изучения соответствующей документации и изучения тонких различий между различными типами анонимных структур.

-анонимные структуры нестандартны? Документация Microsoft MSDN, анонимные структуры (структуры, определенные без имени), считаются нестандартными в c. Однако стандарты ISO C не явно не обращаются к этому аспекту.

] Понимание анонимных структур

безымянные структуры:

c стандарт допускает Для объявления неназванных структур (структуры без имени), которые могут быть созданы и использованы в качестве регулярных названных Structs.
анонимные структуры:

анонимные структуры относятся к определенной функции в некоторых компиляторах C (например, GCC и Visual C), что позволяет доступ к членам неназванной структуры непосредственно из Содержимый объект.
различие

Ключевое различие заключается в доступности членов. В случае неназванных структур участники доступны через стандартный оператор DOT (например, foo.bar), в то время как анонимные структуры разрешают непосредственно доступа к членам без указания имени структуры (например, foo.hi).

Standard vs. on-Standard

. В частности, «анонимное» поведение непосредственно доступа к участникам. Следовательно, последнее считается нестандартной функцией, поддерживаемой определенными компиляторами.

пример использования

стандартный неназванный struct:

. &&&] struct foo { структура { int hi; int пока; } бар; };

struct Foo {
   struct {
      int hi;
      int bye;
   } bar;
};
нестандартный анонимный struct:

struct foo { структура { int hi; int пока; }; //

struct Foo {
   struct {
      int hi;
      int bye;
   }; //  

f.hi = 3; // нестандартная, зависимая от компилятора функция

f.hi = 3; // Non-standard, compiler-dependent feature
Заключение

анонимные структуры, как определено их способностью напрямую доступ к членам из содержащегося объекта, являются не Стандартная функция поддерживается определенными компиляторами C. Стандарт C предоставляет функциональность неназванных структур, но прямая доступность членов не указана и не гарантированно поддерживается.

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3