warning 2066 avec MCC18

Jan 02, 2010 9 Replies

Bonsoir à tous,



En utilisant MCC18, avec les extraits de code suivant:



rom char* text="essai"; ram char var[40];



strncpypgm2ram(var,text,5);



j'obtiens le warning suivant



D:\DvptPic\px01\px01.c:396:Warning [2066] type qualifier mismatch in assignment



bien que le programme fonctionne, ce n'est qu'un warning, j'aimerai bien trouver la syntaxe correct pour éviter ce warning. Si vous avez une idée ...



Bonne année à tous. A+


Bruno a écrit :

les parametres de la fonction sont bien (destination,source,nbre)?

markus a tapoté du bout de ses petites papattes :

var ne serait-il pas un mot clé du compilo ?

LeLapin

On Jan 3, 12:01 am, Bruno

A laquelle de ces trois lignes correspond le warning ?

Et quel est le prototype de la fonction strncpypgm2ram() ? Peut-etre faut-il explicitement caster un des parametres ?

"Bruno" a écrit dans le message de news:

4b3fd066$0$24610$ snipped-for-privacy@news.free.fr...

essaie avec des unsigned char pour voir

par contre, si tu veux recuperer une chaine, la taille est de 6, pas 5, car il ne faut pas oublier le 0 de fin de chaine

Bruno a écrit :

Bonjour et merci pour vos réponses.

La ligne qu déclenche le warning est celle de l'instruction strncpypgm2ram.

Le prototype de cette fonction est décrite dans le fichier c:\mcc18\h\string.h, c'est à dire:

char *strncpypgm2ram (auto char *s1, auto const MEM_MODEL rom char *s2, auto sizeram_t n);

/** @name strncpyram2pgm * The {\bf strncpyram2pgm} function performs a {\bf strncpy} where {\bf s1} * points to program memory and {\bf s2} point to data memory. * @param s1 pointer to destination in program memory * @param s2 pointer to source in data memory * @param n maximum number of characters to copy */

Le code exact qui génere le warning est, (je n'utilise pas de variable var).

void initEcran(void) { int i; for(i=0;i

Bruno a écrit :

??

-> @param s2 pointer to source in data memory me parait contradictoire avec:

-> auto const MEM_MODEL rom char *s2, sinon, la data memory serait en rom?

Bonjour,

As-tu essay=E9 de remplacer : rom char* text=3D"essai"; par const rom char* text=3D"essai";

?

J'ignore comment MicroChip a impl=E9ment=E9 son compilateur C, mais en C ANSI, il est pr=E9f=E9rable de typer un pointeur sur une litt=E9rale par un "const" ( qui le sera de toute fa=E7on).

--

-Stan

--

-Stan

oui, j'ai aussi essayé cela, merci pour vos réponses et pour l'attention que vous avez bien voulu porter à ce problème, comme le warning n'empêche pas le programme de tourner, je vais continuer sans, lorsque je serai assez avancé, pour ceux qui le veule, je vous enverrai le source complet ...

Merci encore et bonne soirée à tous.

en

ion

Teste cela : const far rom char* text=3D"essai"; car dans le prototype de la fonction, il y a le MEM_MODEL, et c'est probablement lui qui pose pb. Ton compilo doit, par d=E9faut g=E9n=E9rer un "const near rom char *".

Essaye et tiens nous au courant...

--

-Stan

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required