Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation C » Je suis vraiment désolé de créer un topic que pour ça mais... (51 réponse(s))
./REPRISE DU POST PRECEDENT (post n°38)   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 22 juillet 2006 à 21:34 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


C'est normal, en C99, on ne peut mettre un label que devant une instruction, un label n'est pas une instruction, un point-virgule en est une. Le GNU C ne rajoute pas ça comme une extension parce qu'on peut rattacher des attributs derrière un label et devant un type et permettre un label juste avant un type créerait une ambiguité.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°39   Marquer comme non lu.
geogeo Ecrit le: Samedi 5 août 2006 à 00:16 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Désole de pourrir le topic de JfG mais j'ai juste une petite question à poser:

HSym entry_hsym;
....
if (entry_hsym==HS_NULL)... ou encore
if (entry_hsym==(HSym){0, 0}) ...


Ce code retourne "Invalid operands to binary '=='."
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°40   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 5 août 2006 à 04:30 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


http://tigcc.ticalc.org/doc/vat.html#HS_NULL #roll#
La documentation, c'est pour les chiens? #roll# Il suffit d'appuyer sur F1 avec le curseur sur HS_NULL...

Sinon, il y a un hack pour faire ce test de manière plus efficace:
typedef unsigned long __attribute__((may_alias)) hsymlong;
if (!*(hsymlong*)&entry_hsym) ...

(Ça donne de l'ASM plus court, mais ce n'est pas très propre ou lisible.)
-Edité le Samedi 5 août 2006 à 04:32 par Kevin Kofler-
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°41   Marquer comme non lu.
geogeo Ecrit le: Samedi 5 août 2006 à 12:03 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Arf en effet, je suis désolé. J'avais pas fait gaffe au 2 dernières lignes.
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°42   Marquer comme non lu.
geogeo Ecrit le: Mardi 19 septembre 2006 à 20:08 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


J'ai quelques petites questions sur le langage C.

Comment vérifier qu'une adresse est paire, genre faire ceci:


const char *ptr = ...;
if (ptr & (void *)1) {
  ...
}



Comment faire en sorte que TIGCC ne me retourne plus l'erreur 'Cannot convert to pointer type'

const void *myfonction(...) {
  ...
  return (const void *)(lib->tconstant_float[obj->token_pos]);
}

tconstant_float est du type "const float *".
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°43   Marquer comme non lu.
Kevin Kofler Ecrit le: Mardi 19 septembre 2006 à 20:59 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


geogeo :
J'ai quelques petites questions sur le langage C.

Comment vérifier qu'une adresse est paire, genre faire ceci:


const char *ptr = ...;
if (ptr & (void *)1) {
  ...
}

const char *ptr = ...;
if ((unsigned long)ptr & 1) {
  ...
}

(Sur PC, tu voudras probablement utiliser ptrint_t (cf. stdint.h, un header C99 livré avec toutes les versions suffisamment récentes de GCC). Faudra que je rajoute un stdint.h à TIGCC, mais il ne suffit pas de rajouter le header, il nous faut des pages et des pages de fichiers .hsf, c'est pour ça que ça n'y est pas encore.)

Comment faire en sorte que TIGCC ne me retourne plus l'erreur 'Cannot convert to pointer type'
const void *myfonction(...) {
  ...
  return (const void *)(lib->tconstant_float[obj->token_pos]);
}

const void *myfonction(...) {
  ...
  return (const void *)(&lib->tconstant_float[obj->token_pos]);
}

-Edité le Mardi 19 septembre 2006 à 20:59 par Kevin Kofler-
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°44   Marquer comme non lu.
geogeo Ecrit le: Mardi 19 septembre 2006 à 23:30 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


OK je vois pour la première. Mieux vaut toute façon passer par des notations explicites.
Pour la dernière le type de tconstant_float était tout simplement mal écrit %)
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°45   Marquer comme non lu.
Kevin Kofler Ecrit le: Mardi 19 septembre 2006 à 23:38 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


geogeo :
OK je vois pour la première. Mieux vaut toute façon passer par des notations explicites.

Sauf que les "notations explicites" ne sont pas portables. Enfin, ici, ça va quand-même marcher vu que le dernier bit n'est pas perdu par les transtypages qui changent la taille, mais sinon, Window$ 64 bits a besoin de unsigned long long pour représenter un pointeur par exemple (c'est totalement débile mais c'est du M$). D'autres plateformes, elles, ne connaissent pas long long (M$VC 32 bits par exemple, c'est génial pour la portabilité chez M$).

Mais tant que tu es dans le contexte de TIGCC, unsigned long est le bon type pour un entier qui a la même taille d'un pointeur.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°46   Marquer comme non lu.
geogeo Ecrit le: Mardi 19 septembre 2006 à 23:40 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


ok :)
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°47   Marquer comme non lu.
geogeo Ecrit le: Jeudi 21 septembre 2006 à 18:57 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Ah oui comment éviter que TIGCC émette un warning "Missing initializer..." lorsqu'il existe une déclaration de ce type:
mystruct mavar;

En gros mavar est remplie seulement dans une boucle for et je voudrais éviter de l'initialiser lors de sa création dans le stack mais sans pour autant enlever le flag du warning.
Il doit y avoir une syntaxe simple mais je l'ai oubliée. :(
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°48   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 21 septembre 2006 à 21:29 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Le "missing initializer", normalement, ce n'est pas quand tu n'initialises pas du tout la structure comme dans ton exemple, mais quand tu l'initialises à moitié. Et ça ne fait pas ce que tu veux, initialiser la structure à moitié, c'est comme si tu mettais le reste à 0, donc autant écrire les 0s explicitement. (En revanche, n'initialiser pas du tout la structure ne met pas la structure à 0.)
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°49   Marquer comme non lu.
geogeo Ecrit le: Jeudi 21 septembre 2006 à 23:33 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Ah je vois ce que tu veux dire, voici mon exemple:


mastruct mavar;
mavar.a = -1;
for (...; ...; ...) {
  if (...) {
    mavar.b = xxx; 
    return;
  }
}
...
assert(false);


En gros mon idée était que la structure était entièrement remplie car la condition de la boucle for doit être validée sinon on termine par un assert (ce qui n'est pas acceptable dans mon code)

Je comprends maintenant pourquoi TIGCC ne peut en aucun cas éviter ce warning. Encore désolé pour la question stupide :D
-Edité le Jeudi 21 septembre 2006 à 23:34 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°50   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 21 septembre 2006 à 23:36 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Euh, es-tu sûr que ton code, c'est ça et pas: mastruct mavar={-1}; (alors qu'il faut 2 initialisateurs)? Parce que ce que tu as posté, normalement, ça ne donne pas de warning "missing initializer". Au contraire, c'est la manière correcte de n'initialiser qu'une partie d'une structure.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°51   Marquer comme non lu.
geogeo Ecrit le: Jeudi 21 septembre 2006 à 23:48 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Arf c'est le warning "tototutu..." may be used unintialized in this function. Désolé
Mais bon c'est juste un warning donc tant pis c'est je ne peux pas le virer juste pour ce cas spécifique. :)
-Edité le Jeudi 21 septembre 2006 à 23:49 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
  :: Index » Forum Ti68K » Programmation C » Je suis vraiment désolé de créer un topic que pour ça mais... (51 réponse(s))
Pages : 3/3     « 1 2 [3] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 42.99ms avec 18 requetes