Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 25 177 825

  • Nb. de membres 187
  • Nb. d'articles 1 270
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  OS4 toutes plateformes confondues »» JAmiga OS4

JAmiga OS4#392

7Contributeur(s)
FabienalexElwoodbouvelle2000FabMrodfrCreols
3 Modérateur(s)
K-LElwoodcorto
Fabien Fabienicon_post
Je cherche à compiler JAmiga pour OS4 et, lors de la compilation, j'ai ce message d'erreur

jnienv.c:263: error: lvalue required as left operand of assignment

Ligne concernée
(void *)(env->GetBooleanArrayElements) = &J_GetPrimitiveArrayElements;

Fabien
Idem pour les lignes suivantes jusqu'a la ligne 278

Quelqu'un pourrait me dire d'où vient le problème?
bouvelle2000 bouvelle2000icon_post
J'ai l'impression que c'est le "&" du &J_GetPrimitiveArrayElements qu'il considère comme une opération logique (and) dont il manquerait le membre de gauche.

Ce n'est qu'une idée.

Maintenant pourquoi ne le considère-t-il pas comme une adresse???
A1200 + Blizzard PPC 0603e 60/170 + BVision + Carte Wifi PCMCIA + OS4
Fab Fabicon_post
L'"erreur" ce n'est pas l'utilisation du & qui semble tout à fait valide, mais la façon dont le cast vers (void *) est fait, et le fait que tu utilises probablement gcc4.
Dans gcc3 ils ont rendu le "cast à gauche" obsolète, et dans gcc4 ça a été retiré complètement, apparemment.

Si tu utilises gcc2.95 ou gcc3, ça compilera sans problème. Si tu tiens absolument à utiliser gcc4 et te confronter à ses bugs et incompatibilités, alors tu devras remanier la façon dont ce cast est fait.
Message édité par : Fab / 17-03-2009 20:20
Elwood Elwoodicon_post
Jamiga ? Si tu réussis ce tour de force, tu seras un héro :-)

Java sera bientôt la dernière technologie qui nous manque.

--
Philippe Ferrucci
Avec une Sam460 et AmigaOS 4.1, je suis eco-responsable. Cool !

Message édité par : Elwood / 17-03-2009 21:33
alex alexicon_post
@Fabien

Le message t'indique que "tu" essaies d'affecter une valeur à quelque chose qui ne peut pas se trouver en partie gauche d'une affectation.
Bon je viens de jeter un oeil au code, vire simplement les (void*), ça devrait passer (et si on voulait même aller plus loin le '&' juste après le le '=' n'est pas nécessaire).
Message édité par : alex / 18-03-2009 11:04
Fab Fabicon_post
Il n'empêche que ce code est parfaitement valide avec la majorité des compilateurs C, excepté GCC > 3.
alex alexicon_post
Citation : Fab?

Il n'empêche que ce code est parfaitement valide avec la majorité des compilateurs C, excepté GCC > 3.?


Il n'empêche que dans la norme ISO/IEC 9899:1999, autrement nommée C99 (p*t*in 10 ans !!!), page 49, ligne 8 je peux lire :Even with an explicit cast, it is invalid to convert a function pointer to an object pointer or a pointer to void, or vice versa.
Donc non ce code n'est valide qu'avec des compilateurs C qui ne respectent pas la dernière norme C en date... Après chacun voit midi à sa porte, mais on peut aussi continuer à programmer en C K&R...

Juste pour être certain par rapport à l'allergie à GCC > 2.95 : Fab1 ?

PS: http://www.open-std.org/JTC1/SC22/WG14/www/C99RationaleV5.10.pdf

Message édité par : alex / 18-03-2009 15:00
Fab Fabicon_post
oui, c'est du C99, et ensuite ? Ca ne change rien au fait que ça n'avait aucun sens de supprimer cette possibilité dans la nouvelle norme (qui est utilisée très fréquemment pour de bonnes raisons). GCC3 avait au moins l'intelligence de le signaler comme "obsolète" sans pour autant l'interdire.

Et je ne suis pas spécialement allergique à GCC > 2 ni au C++ (que je pratique quotidiennement). J'utilise ces outils quand c'est nécessaire, mais uniquement lorsque ça l'est. Mais je ne vois pas pourquoi il faudrait écarter tout esprit critique pour autant.

alex alexicon_post
C'était une boutade quand je parlais d'allergie ça m'a fait sourire quand j'ai lu et j'ai immédiatement pensé à d'autres de nos discussions (notamment C++ comme tu y as fait référence), c'est tout ;-)

Après sans même parler de norme ou autre dans le cas qui nous intéresse je ne vois pas trop l'intérêt du cast vers un (void *) pour mettre dans un pointeur sur une fonction de type jboolean xxx (JNIEnv *env, jobject obj, jfieldID fieldID) l'adresse d'une fonction de type jboolean xxx (JNIEnv *env, jobject obj, jfieldID fieldID) :#

Concernant GCC3 et le fait qu'il indique que c'est obsolète oui soit, mais c'était quelques années après la sortie de la norme, maintenant 10 ans après je pense qu'on peut leur pardonner de ne plus le supporter non ? Par contre je suis d'accord le message n'est pas hyper clair.

Je n'écarte pas l'esprit critique, d'ailleurs au contraire on te dirait au boulot que je l'ai peut-être un peu trop souvent (l'esprit critique) 8-). Je suis en général assez ouvert, j'aime bien argumenter quand j'ai une idée et j'essais de défendre mon point de vue le plus possible mais ça ne veut pas dire non plus que je ne reconnais pas quand j'ai tord...
Mrodfr Mrodfricon_post
@Fabien

salut,

Je ne suis pas codeur du tout mais je rend visite souvent aux codeurs Amiga AOS4 qui discutent sur le site suivant:

http://utilitybase.com/

Je sais que tout le mode connais ce site de programation donc désolé d'avoir posté pour rien ....
SAM440EP+AOS4.1


comme le dis elwood: le faire et devenir un héro....
Message édité par : Mrodfr / 20-03-2009 08:11
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme