являются стандартными «анонимными структурами» в 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