¿son estándar "estructuras anónimas" en c? Un análisis detallado
introducción
El concepto de "estructuras anónimas" en C ha planteado preguntas sobre su estandarización y naturaleza precisa. Este artículo tiene como objetivo aclarar estos problemas examinando la documentación relevante y explorando las distinciones sutiles entre diferentes tipos de estructuras anónimas.
son estructuras anónimas no estándar?
según La documentación de MSDN de Microsoft, las estructuras anónimas (estructuras definidas sin nombre) se consideran no estándar en c. Sin embargo, los estándares ISO C no abordan explícitamente este aspecto.
comprensión de estructuras anónimas
sin nombre de estructuras:
el estándar C permite para la declaración de estructuras no identificadas (estructuras sin nombre), que se puede instanciar y utilizar como nombre regular estructuras.
estructuras anónimas:
estructuras anónimas se refieren a una característica específica en algunos compiladores C (por ejemplo, GCC y Visual C) que permite el acceso a miembros de una estructura sin nombre de el objeto que contiene.
la distinción
la tecla La distinción radica en la accesibilidad de los miembros. En el caso de las estructuras sin nombre, se puede acceder a los miembros a través del operador DOT estándar (por ejemplo, foo.bar), mientras que las estructuras anónimas permiten acceder directamente a los miembros sin especificar el nombre de estructura (por ejemplo, foo.hi).
estándar vs. no standard
El estándar define la funcionalidad de las estructuras sin nombre, pero no específicamente El comportamiento "anónimo" de acceder directamente a los miembros. Por lo tanto, esta última se considera una característica no estándar compatible con ciertos compiladores.
Ejemplo Usage
Standard Structs sin nombre:
struct Foo { struct { int hi; int bye; } bar; };
no-standard anonymous struct:
struct Foo { struct { int hi; int bye; }; //En el segundo ejemplo, se puede acceder a los miembros directamente:
f.hi = 3; // Non-standard, compiler-dependent featureconclusion
estructuras anónimas, tal como se define por su capacidad de acceder directamente a los miembros del objeto que contiene, no son un objeto no Característica estándar compatible con ciertos compiladores C. El estándar C proporciona la funcionalidad de las estructuras sin nombre, pero la accesibilidad directa de los miembros no se especifica y no se garantiza que sea compatible.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3