J'ai la structure suivante:Comment calculer lors de l'exécution la valeur maximale autorisée avant le survol de type de données?
struct Some_Struct {
uint32_t a;
int16_t b;
uint8_t c;
};
struct Other_Struct {
uint32_t a;
uint32_t b;
uint32_t c;
};
La taille variable est calculée en tant que telle:
uint32_t size = sizeof(Some_Struct) + sizeof(Other_Struct) * n;
Ma question est, étant donné un sizeof
Some_Struct et Other_Struct dont la taille réelle dépend de la plate-forme, l'architecture et l'emballage, comment puis-je au moment de l'exécution déterminer le nombre maximum de n
autorisé avant size
survole?
"en spécifiant [0] est indéfini." - Ce n'est pas tout à fait correct. Utilisez un _flexible array member_: 'Other_Struct e []'. Ce hack '[1]' est hérité et invoque un comportement indéfini dans C moderne. – Olaf
Ceci est uniquement supporté par C99. C++ qui est étiqueté ne prend pas en charge les membres de groupe flexibles. – Zhro
Avec les notes ci-dessus, je suppose qu'il est temps de poser à nouveau la question, est ce 'c' ou' C++ '? Ils ne sont pas la même langue et n'auront pas la même réponse. –