31Fermer33
Kevin KoflerLe 13/05/2008 à 08:27
Pollux (./26) :
l'alignement de toutes les structures est le même

C'est faux, du moins avec GCC. Par exemple, struct foo {char x;}; a une taille et un alignement de 1 dans TIGCC.
The fact of avoiding any name collision (between function and type) is let to the user.
Ca pose un problème d'évolutivité, qu'est-ce qui se passe si je définis une fonction digamma et qu'elle est implémentée dans une version future de maylib ?

Ton programme va boguer, exactement comme en TI-BASIC.
int non_commutative_product;
Ca me paraît pas très extensible comme façon de savoir si la classe vérifie un prédicat, ça veut dire que c'est impossible de linker ensemble deux modules qui ont été compilés avec des versions différentes de maylib (alors que si tu veux t'en servir comme CAS sur calculatrice la compatibilité binaire est super importante). Pourquoi pas utiliser à la place un champ avec des flags genre ASSERT_COMMUTATIVE_PRODUCT ? Comme ça tu pourras en rajouter d'autres quand t'en auras besoin...

On peut toujours rajouter des flags sans casser la compatibilité ascendante, il suffit de les rajouter à la fin de la structure. Et la compatibilité descendante, je ne connais pas un grand nombre de libs qui la gèrent. AMHA, c'est normal qu'il faille au moins la version de MAY de laquelle on a pris le header. Et puis vu que la lib est encore en développement, la compatibilité ascendante ne doit pas forcément être garantie non plus à l'heure actuelle, c'est à PpHd de voir.