Articles of unions

Les syndicats et les types

J’ai cherché pendant un moment, mais je ne trouve pas de réponse claire. Beaucoup de gens disent que l’utilisation des syndicats pour taper des mots n’est pas définie et est une mauvaise pratique. Pourquoi est-ce? Je ne vois aucune raison pour laquelle il ferait quoi que ce soit d’indéfini compte tenu de la mémoire dans […]

Union anonyme dans struct pas en c99?

Voici le code de problème très simplifié que j’ai: enum node_type { t_int, t_double }; struct int_node { int valeur; }; struct double_node { valeur double; }; struct node { enum type_noeud; syndicat { struct int_node int_n; struct double_node double_n; }; }; int main (void) { struct int_node i; valeur i = 10; noeud de […]

Est-ce que la punition de type à travers une union non spécifiée dans C99, et est-elle devenue spécifiée dans C11?

Un certain nombre de réponses à la question Stack Overflow Obtenir les bits IEEE Single-Precision pour un float suggère d’utiliser une structure d’ union pour le type punning (ex.: uint32_t les bits d’un float en uint32_t ): union { float f; uint32_t u; } un; un.f = your_float; uint32_t target = un.u; Cependant, la valeur […]

Union C ++ en C #

Je traduis une bibliothèque écrite en C ++ en C #, et le mot-clé “union” existe une fois. Dans une structure Quelle est la bonne façon de le traduire en C #? Et qu’est-ce que ça fait? Cela ressemble à quelque chose comme ça; struct Foo { float bar; union { int killroy; float fubar; […]

Comment comstackr du code C avec des structures / unions anonymes?

Je peux le faire en c ++ / g ++: struct vec3 { union { struct { float x, y, z; }; float xyz[3]; }; }; Alors, vec3 v; assert(&v.xyz[0] == &v.x); assert(&v.xyz[1] == &v.y); assert(&v.xyz[2] == &v.z); marchera. Comment fait-on cela en c avec gcc? j’ai typedef struct { union { struct { float […]

Comment boost :: variant et boost :: tout travail?

Comment fonctionnent les variantes et celles de la bibliothèque Boost? Dans un projet sur lequel je travaille, j’utilise actuellement une union balisée. Je veux utiliser autre chose, car les unions en C ++ ne vous permettent pas d’utiliser des objects avec des constructeurs, des destructeurs ou des opérateurs d’affectation surchargés. J’ai interrogé la taille de […]

Que signifie «demande de membre ‘*******’ dans quelque chose qui n’est pas une structure ou un syndicat»?

Existe-t-il une explication facile de ce que signifie cette erreur? request for member ‘*******’ in something not a structure or union Je l’ai rencontré plusieurs fois au cours de mon apprentissage du C, mais je n’ai aucune idée de ce que cela signifie.

Pourquoi C ++ n’autorise-t-il pas les structures anonymes?

Certains compilateurs C ++ autorisent les unions anonymes et les structures comme extension du standard C ++. C’est un peu de sucre syntaxique qui est parfois très utile. Quelle est la justification qui empêche que cela fasse partie de la norme? Y a-t-il un barrage technique? Une philosophie? Ou tout simplement pas besoin de le […]

Quand quelqu’un utiliserait-il un syndicat? Est-ce un vestige des jours C seulement?

J’ai appris mais je n’ai pas vraiment de syndicats. Tous les textes en C ou C ++ que je traverse les introduisent (parfois en passant), mais ils ont tendance à donner très peu d’exemples pratiques expliquant pourquoi ou où les utiliser. Quand les syndicats seraient-ils utiles dans un cas moderne (voire hérité)? Ma seule hypothèse […]

But des unions en C et C ++

J’ai utilisé les syndicats plus tôt, confortablement; aujourd’hui, j’ai été alarmé quand j’ai lu ce post et en est venu à savoir que ce code union ARGB { uint32_t colour; struct componentsTag { uint8_t b; uint8_t g; uint8_t r; uint8_t a; } components; } pixel; pixel.colour = 0xff040201; // ARGB::colour is the active member from […]