[Langage C] Spécifications C90 ANSI/ISO

Mod Message lu Posté le 02 Juin 2008 à 22:36 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
Hop, je suis à la recherche de documents contenant les spécifications complètes du langage C suivant la norme C90, ANSI ou ISO, peu importe.
Ceux-ci ne sont pas disponibles sur les sites de l'ANSI (dont l'utilité laisse à désirer) et de l'ISO (apparemment tous les documents sont payants, aux alentours de 500 francs suisses).

J'ai en effet la joie d'avoir un professeur de C qui apparemment réinvente certaines parties du C, et de façon suffisamment assurée pour être troublante. Bref, je cherche une source fiable.

Cela concerne notamment les déclarations et initialisations de pointeurs du type :

Code : C
int variable = 0;
int* pointeur = &variable;


La seconde instruction ne serait pas permise.
Et la déclaration de type :

Code : C
int (*p) = 20;


Qui équivaudrait à :

Code : C
int *p;
*p = 20;


Sachant qu'un C ANSI/ISO Strict, il est impossible d'affecter une variable à un pointeur : conflit de type entre le type pointeur et le type variable, ce qui implique l'utilisation d'une conversion forcée.

J'ai déjà un peu fouiné sur le net sans rien récupérer. Si quelqu'un a des sources fiables, je suis preneur.
Et sachant qu'il y a des programmeurs professionnels sur le site, j'apprécierais de connaître leur avis sur la question. :smile:
noob4ever Message lu Posté le 03 Juin 2008 à 21:59 Bulle
Avatar de noob4ever
Explorateur

Messages : 295
GCPoints : 48742
Norme ansi http://megaton.obfuscated.net/~orange/devel/specifications/c89-draft.html#3.1.3.4

Je ne suis pas programmeur pro mais je donne mon avis quand même :

Il ne me semble pas que int *p; *p = 20 soit équivalent à int (*p) = 20; tout simplement à cause de la priorités de '*' ( cf la norme ).
What did C:/DARTHVADER said to C:/DARTHVADER/LUKESKYWALKER ?

I'm your folder
Darktib Message lu Posté le 03 Juin 2008 à 22:03 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Meme avis que noob4ever, meme si je penche plutot pour la priorité des parentheses.

Je pense que peut etre ceci serait possible:

Code :
 (*(int* p))=20

Mais je ne suis pas du tout sur, nottament pour le fait que le pointeur n'est pas initialisé correctement : on risqque de faire des lectures hors-mémoire tres facilement avec ca...
Mod Message lu Posté le 05 Juin 2008 à 18:38 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
Merci pour le lien, c'est apparemment exactement ce que je cherchais ! Je vais prendre le temps de tout lire niveau pointeurs afin d'être sûr bien comprendre, mais à première vu effectivement, ce serait bien impossible de faire ce que je décrivais plus haut...
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.0789 secondes