Ça par contre, c'est lamentable.

—
Zeroblog —
« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » —
Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » —
GT TurboOn devrait déjà être plus ou moins content qu'ils supportent toujours le C/C++, parce qu'un temps ils voulaient un peu arrêter ça. Ils sont revenus en arrière mais on ne sait pas si c'est une question de temps. Dans tous les cas, ils n'ont plus envie d'investir beaucoup dans ces outils.
Je n'apprécie pas du tout mais comme tu l'as dit il y a des alternatives comme MinGW. Il me semble par contre qu'ils sont toujours en dessous de ce que pouvait produire MSVC++ en termes d'optimisations.
Ben t'utilises un IDE genre Code::Blocks qui propose un frontend graphique à MinGW::gdb
#define offsetof(type,member) ((unsigned long)&(((type*)0)->member))
Intéressant cette définition de offsetof (kernel.h, PreOS). Celles proposées par Wikipedia sont plus complexes, mais celle-là me semble robuste, non ?
En fait elles ne fonctionnent pas de la même façon.
La définition de WP calcule une différence de pointeurs, et d'après la norme c'est valide : ça donne une "distance", l'unité étant la taille du type du pointeur (par exemple, entre deux longs consécutifs, la distance sera 1, pas 4) ; ici, vu qu'on utilise char, ce sont des octets.
La méthode de PedroM caste directement un pointeur vers un entier. Ça marche sur 68k (ainsi que sur x86, et pas mal d'autres procos), mais je ne suis pas certain que ce soit garanti sur toutes les architectures.

—
Zeroblog —
« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » —
Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » —
GT Turboça ne doit pas marcher sur les OS à mémoire virtuelle récents (au moins sur x86) car il est interdit de mapper les adresses virtuelles inférieures à une certaine valeur (quelques pages, donc multiples de 4k).
donc une différence de pointeurs est probablement plus robuste.
il me semble que sur gcc offsetof est un builtin
Je ne suis pas sûr non plus de voir ce que veut faire Folco (où il empile son pointeur).
(d'ailleurs tu pourrais utiliser jbsr pour le \Push aussi, parce que l'assembleur saura générer un bsr.s automatiquement.)
Pen^2 Le 29/08/2012 à 11:43 bsr push empile son adresse de retour et branche sur push, qui appelle printf qui utilise l'adresse qu'il trouve sur la pile déposée par bsr push (qui se trouve être l'adresse de la chaîne) et au retour il restaure la pile avec le addq.
Comme c'est joli !
on devrait l'encadrer, je suis trouducuté par tant de rulez ##trilove##