¿Por qué una estructura vacía en C es una violación de restricción? ¿Por qué se cambia esta regla en C++?Estructura vacía en C vs estructura vacía en C++
¿Hay alguna razón histórica?
¿Por qué una estructura vacía en C es una violación de restricción? ¿Por qué se cambia esta regla en C++?Estructura vacía en C vs estructura vacía en C++
¿Hay alguna razón histórica?
ya que no tiene herencia en C, no las necesita. Si solo desea tener un tipo de puntero distinguible, puede usar punteros para tipos incompletos.
struct opaque;
struct opaque* stranger = 0;
debería funcionar bien.
+1 de mí: Ganaste mi argumento con @Nawaz :) –
+1 por recordarme esto! – Nawaz
Pensé que eres un macroexperto.¿Podría ver http://stackoverflow.com/questions/5355241/generating-function-declaration-using-a-macro-iteration si hay alguna mejora posible? ¡Gracias! –
Mi opinión es la siguiente:
En C, no hay herencia, plantillas, y la sobrecarga de funciones - tres razones principales que utilizamos estructuras vacías en C++ - como una interfaz de base, como un parámetro de plantilla, como una escriba para ayudar a sobrecargar la resolución.
¿Puedes pensar en algún uso real de una estructura vacía en C?
Estructuras vacías se pueden utilizar manejar, ¿no? [Maneja la comparación: clases vacías vs. clases indefinidas vs. vacío *] (http://stackoverflow.com/questions/4525847/handles-comparison-empty-classes-vs-undefined-classes-vs-void) – Nawaz
@Nawaz: Tal vez, tal vez, mencioné específicamente que esto era solo una suposición :) –
@Armen: Eso significa que su conjetura parece estar equivocada. Las estructuras vacías en C se pueden usar en muchas ocasiones, ¡especialmente cuando se usa 'void *'! – Nawaz
http://stackoverflow.com/questions/755305/empty-structure-in-c –
posible duplicado de [¿Cuál es el tamaño de una estructura vacía en C?] (Http://stackoverflow.com/questions/ 1626446/what-is-the-size-of-an-empty-struct-in-c) – Nawaz
@Nawaz: Esta es una pregunta diferente. La pregunta real es "por qué" no "qué". –