Maison > Article > développement back-end > Pourquoi l'initialisation par notation par points n'est-elle pas prise en charge pour les structures en C ?
Initialisation de structures C : une approche alternative
En C, contrairement à C, il n'est pas possible d'initialiser des structures en utilisant la notation par points ci-dessous :
<code class="c++">struct address { int street_no; char *street_name; char *city; char *prov; char *postal_code; }; // Invalid C++ syntax address temp_address = { .city = "Hamilton", .prov = "Ontario" };</code>
Cette requête soulève plusieurs questions :
Raisons techniques et pratiques
Techniquement, il n'y a aucune limitation sous-jacente empêchant l'exécution implémentation de l'initialisation par notation par points pour les structures en C . Cependant, le Comité des normes C a choisi de ne pas inclure cette fonctionnalité pour plusieurs raisons pratiques :
Approches alternatives pour la lisibilité
Pour améliorer la lisibilité, envisagez les alternatives suivantes :
<code class="c++">address temp_address = { 0, // street_no nullptr, // street_name "Hamilton", // city "Ontario", // prov nullptr, // postal_code };</code>
<code class="c++">struct address { address(int sn, char* stn, char* c, char* p, char* pc): street_no(sn), street_name(stn), city(c), prov(p), postal_code(pc) {} int street_no; char *street_name; char *city; char *prov; char *postal_code; }; address temp_address(0, nullptr, "Hamilton", "Ontario", nullptr);</code>
Ces alternatives fournissent une initialisation explicite et lisible tout en adhérant aux principes de sécurité et de cohérence des types de C.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!