1

J'aimerais avoir une fonction qui prends comme arguments 2 chaines, qui retourne 0 ou 1, et qui s'utiliserait comme ça :

char *tabl[10]
...
teste(tabl[0],"Hello")

Donc ma fonction ressemble à ça :

int teste(char *chaine1,char *chaine2)
{
...
}

Mais à la compilation ça me donne des warnings :
Passing arg 2 of 'teste' discards qualifiers from pointer target type

Ça marche très bien, mais je voudrais quand même virer ces erreurs... Comment faut-il déclarer et utiliser ma fonction ? (quand même pas un (char*)"Hello" à chaque fois j'espere ???)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

c'est pas une erreir, donc pas de pb.

tu cliques, dans les menus de TIGCC :
Option> Projet
dans la case en haut à droite de la fenêtre qui s'ouvre (là où il a les switch pour GCC, tels -Ox, -W -Wall et autres), tu supprime celui qui contient le terme "string" (je sais plus ce que c'est exactement)
c'est un switch que TIGCC inclut automatiquement, et qui sert à éviter certains usages de chaines de caractères...
perso, je le trouve à 500% inutile et plus que génant...

normalement, ça devrait marcher après
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

3

C bizzard qu'il faille changer des options dans TIGCC...
Y'a pas un moyen de ne pas avoir ces erreurs sans rien modifier ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

non, je penses pas... enfin, Kevin te répndra mieux que moi
c un switch rajouté par défaut depuis qeulques versions.
il est totalement inutiel dans TOUS les cas que j'ai recontré.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

5

Ok ça marche en effet (40 warnings ct un peu beaucoup grin), j'ai gagné 200 octets love

Merci !
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

de rien.

si tu veux gagner de la place, tu peux rajouter les switch :

-Os (au lieu de -O, -O1, -O2 ou -O3, je sais plus lequel est utilisé par défaut par TIGCC)
et y'en a un autre qui contient "frame-pointer"... je sais plus le nom exact sad
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

7

C'est -Os par défaut
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

8

arf, merde sad


voila, j'ai retrouvé :
-fomit-frame-pointer
Don't keep the frame pointer in a register for functions that don't need one. This avoids the instructions to save, set up and restore frame pointers; it also makes an extra register available in many functions. Note however that you must not use this option if you use floating point operators: TIOS routines for floating point arithmetic assume that the frame pointer is always present!
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

9

Ce qui signifie ? grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

10

ne garde pas le pointeur de fenêtre dnas un registre pour les fonctions qui n'en n'ont pas besoin.
cela évite aux fonctions de sauvegarder, activer, et restaurer le pointeur de fenêtre.
cela libère aussi un registre supplémentaire pour pas mal de fonctions.
Remarquez cependant que vous ne devez pas utiliser cette fonction si vous utiliser des opérateurs sur les flottants : les routines du TIOS pour l'arithmétique en virgule flottante supposent que le pointeur de fenêtre est toujours présent.


en gros, rajouter ceci fait que le compilateur ne fera pas
link a6,#0
et unlk a6
quand ce ne sera pas nécessaire.

j'utilises ce switch dans KII.
regsrade si ça fait gagner en mémoire... en tout cas, c censé faire gagner en rapidité dans certains cas.


sinon, essaye aussi les passages par registres
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

11

Ok, v essayer tout ça smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

12

Bon courage.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

13

Au lieu de supprimer le warning s'il te gène, corrige ta déclaration:
int teste(char *chaine1,const char *chaine2)
Tu peux probablement mettre même les 2 en const. (Changes-tu chaine1?)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

14

Disons que la seconde chaine est une constante. Donc tu dois dire au compilo que tu ne peux pas la modifier.
Peut etre : int teste(const char *chaine1,const char *chaine2)
Le caractere const dans un argument de fonction signifie que la fonction ne va pas modifier ce parametre.

15

dans un de mes prog, j'ai eu exactement les memes warning, pour exactement la meme raison: "transmission" de char entre fonctions
j'ai téléchargé la toute derniere version de tigcc: plus aucun warning

16

nhl a écrit :
dans un de mes prog, j'ai eu exactement les memes warning, pour exactement la meme raison: "transmission" de char entre fonctions j'ai téléchargé la toute derniere version de tigcc: plus aucun warning


Sûr? Est-ce peut-être un projet créé avec une ancienne version de TIGCC IDE qui ne mettait pas l'option -Wwrite-strings? Parce que si c'est un projet créé avec la dernière version de TIGCC IDE, c'est à reporter comme bogue... C'est normal qu'il y ait un warning ici!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

17

j'ai fait mon prog sous un ancienne version de ti-gcc ide
ca me mettait plein de warnings
j'ai alors télécharger la derniere version
j'ai recompilé le mem projet: y'avais plus de warning....
la version que j'ai est la 0.94 beta 13
l'ancienne, je ne sais plus...

18

oups !!
je viens de retester: ca m'a remis les warnings...tongue
"Passing arg 3 of 'aff_txt' discards qualifiers from pointer target type"
j'ai pas du recompiler, j'ai du juste renvoyer le fichier à VTI : j'ai cru alors qu'il n'y avais pas de warning....tongue

19

En effet, en mettant const ça supprime toutes les erreurs, je préfere ça que de virer un parametre de compilation...

PpHd #13 > Oui, les deux chaines ne sont pas modifiées dans la fonction (ça ne fait que des comparaisons), donc je peux mettre la 1ere en const également, mais quel est l'avantage ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

20

De ne pas avoir de Ouarnaingue smile
Et puis pour toi, le programmeur de la fonction, ça t'empêche d'écrire dans la chaîne par erreur.

Thibaut.
Sainte Marie mère de Dieu
Priez pour nous pauvres pêcheurs
Maintenant et à l'heure de notre mort

Amen.

21

C tout ? Pas de gain de place ni rien ? grin

Parceque les warnings avec la 1ere chaine y'en a pas, donc c pas très utile smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

22

Non le const n'apporte rien d'autre d'après ce que je sais.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

23

Ok.

Un autre petit problème, mais c pas la peine de créer un topic pr ça :
hnd_box=DialogNewSimple(120,35); DialogAddTitle(hnd_box,"GB Exporter",BT_OK,BT_NONE); DialogAddRequest(hnd_box,2,15,"Nom carte : ",0,8,10); int_key=DialogDo(hnd_box,CENTER,CENTER,chr_nam,NULL); HeapFree(hnd_box);

Au premier lancement du programme, ça marche sans problème. Mais au 2eme le titre de la boite "GB Exporter" est remplacé par les n-1 derniers caractères de la la valeur entrée précedement (n=dimention de la chaine). Pkoi ???
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

24

Bob 64
a écrit : PpHd #13 > Oui, les deux chaines ne sont pas modifiées dans la fonction (ça ne fait que des comparaisons), donc je peux mettre la 1ere en const également, mais quel est l'avantage ?


1. Que le compilateur sait que tu peux passer des chaînes fixes comme paramètres (et donc pas de warning).
2. Que le compilateur peut s'en servir pour optimiser certaines choses.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

25

Ah ok donc ça vaut le coup smile

Et pr le post #22 c normal mon problème ???
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

26

Bob 64
a écrit : Au premier lancement du programme, ça marche sans problème. Mais au 2eme le titre de la boite "GB Exporter" est remplacé par les n-1 derniers caractères de la la valeur entrée précedement (n=dimention de la chaine). Pkoi ???


Probablement ton buffer pour la valeur entrée est trop petit.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité