Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/02/2007, à 23:10

Chaussette

Volatile !

Bon-jour-soir smile

Pouvez-vous me dire pourquoi se code exemple ne fonctionne pas ?

volatile char p[50];

int main (void) 
{
    strcpy (p, "bonjour");
    return 0;
}

"attention : passage de l'argument n°1 de « strcpy » annule des qualificateurs du type du pointeur cible"

Dernière modification par Chaussette (Le 28/02/2007, à 21:30)


Les clowns se marient en grande pompes

Hors ligne

#2 Le 28/02/2007, à 21:31

Chaussette

Re : Volatile !


EDIT:
-Changement du titre.
-Isolation du problème et proposition d' un exemple.
-up


Les clowns se marient en grande pompes

Hors ligne

#3 Le 28/02/2007, à 22:37

Zapan

Re : Volatile !

T'as vraiment besoin de volatile ? Parceque d'une je vois pas à quoi ça sert, et de deux ça compile sans...
Enfin si t'en a besoin tu peux m'expliquer à quoi ça sert ?

Hors ligne

#4 Le 28/02/2007, à 23:07

Chaussette

Re : Volatile !

Mon programme utilise un thread.
Il fait des opérations et des test sur une chaîne, qui reçoit aussi les opérations du thread.

Pour éviter des résultats aléatoires qui peuvent aussi tourner en erreur de segmentation j' ai besoin que le compilateur n'optimise pas ces opérations.

EDIT :
Je compte aussi bloquer l'accès a cette variable, pendant les opération que fait le thread.
Sinon ça ne suffirait pas.

Mais pardessus tout, j' aimerais comprendre pourquoi strcpy & Co me renvoient des erreurs.

Dernière modification par Chaussette (Le 28/02/2007, à 23:11)


Les clowns se marient en grande pompes

Hors ligne

#5 Le 01/03/2007, à 00:20

xilef

Re : Volatile !

Euh, ça fonctionne... Je viens de faire le test en plus et tout est #1.


.felix

Hors ligne

#6 Le 01/03/2007, à 01:46

Chaussette

Re : Volatile !

hmm.. J' utilise cette ligne de compilation toute bête :

gcc -o test test.c

C'est ce que tu as du faire aussi j' imagine ?
L' erreur vient donc du compilo, ou des librairies..

Une idée ?


Les clowns se marient en grande pompes

Hors ligne

#7 Le 01/03/2007, à 02:04

Luc Hermitte

Re : Volatile !

T'inquietes, il n'optimisera rien sur un tableau. C'est pas comme si tu allais bidouiller un entier ou la valeur d'un pointeur.

#8 Le 01/03/2007, à 04:06

xilef

Re : Volatile !

C'est pas une erreur mais un warning... ça n'empêche pas ton programme de compiler


.felix

Hors ligne

#9 Le 01/03/2007, à 05:26

Chaussette

Re : Volatile !

Si je comprend bien (j'ai encore du mal des fois tongue) comme j' appel une bibliothèque dynamique, il est impossible d' optimiser son code, puisqu' elle est déjà compilée. Le code n' est optimisé que dans mon programme a moi.

J' ai bon !?

Si j' ai bon, je trouve ce warning un peu abscon pour des options de warning très laxistes.


Les clowns se marient en grande pompes

Hors ligne

#10 Le 01/03/2007, à 15:40

Luc Hermitte

Re : Volatile !

Le warning veux juste dire que ta fonction ne sait pas traiter un argument qui est sensé être volatile.
Il aurait fallu que la signature soit "strcpy(char volatile*, char const*)", ou que tu retires le qualifieur avec un const_cast<>() (en C++).

D'un autre côté, sur un tableau de caractères, le volatile n'apporte strictement rien. A la limite, tu peux y donner une sémantique particulière. C'est une technique très intéressante, mais je ne suis pas persuadé que ta volonté d'utiliser volatile soit guidées par ses considérations -- tu aurais su ce qui clochait autrement (cf article d'Andrei Alexandrescu, pour le CUJ, au sujet de volatile -> http://www.ddj.com/dept/cpp/184403766)

#11 Le 01/03/2007, à 19:13

Chaussette

Re : Volatile !

Effectivement, a y réfléchir je n' ai pas vraiment besoin de volatile.
Je me penche, là plutôt vers les mutex.

Mais je voulais comprendre la cause du warning, et en connaître les conséquences.

Merci pour votre aide :°)
a++

Dernière modification par Chaussette (Le 01/03/2007, à 19:13)


Les clowns se marient en grande pompes

Hors ligne