Partage
  • Partager sur Facebook
  • Partager sur Twitter

Norme C99 et les commentaires

Sujet résolu
27 novembre 2010 à 20:20:31

Bonjour,

voici 2 codes:
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
	for(int i = 0;i<10;i++)
		printf ("%d\n", i);
}

et un autre:
#include <stdio.h>
#include <stdlib.h>


int main (void)
{
int i = 0;
//	for(int i = 0;i<10;i++)
		printf ("%d\n", i);
}



Je me demandais simplement pourquoi à la compilation, le premier me donne une erreur du compilateur (GCC) à cause de la création de variable dans une boucle for qui n'est autorisé qu'avec la norme C99, alors que le seconde ne me donne pas d'erreur du compilateur or j'ai souvent lu que le commentaire sur une ligne(// ) a été rajouté à la norme C99.

Auriez-vous une explication ? Je vous remercie d'avance.
  • Partager sur Facebook
  • Partager sur Twitter

🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles  - ♡ Copying is an act of love.

27 novembre 2010 à 20:46:30

tu dois avoir un warning tout simplement.
Quelles sont tes options de compilation ?
  • Partager sur Facebook
  • Partager sur Twitter
27 novembre 2010 à 20:54:36

Non je n'ai pas de 'Warning'.

Pour le premier code voila:
~/Bureau$ gcc main.c
main.c: In function ‘main’:
main.c:7: error: ‘for’ loop initial declarations are only allowed in C99 mode
main.c:7: note: use option -std=c99 or -std=gnu99 to compile your code


Et le seconde se passe normalement.

Je n'ai pas d'optimisation du compilo, voila ce que je tape: gcc main.c et c'est tout.

  • Partager sur Facebook
  • Partager sur Twitter

🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles  - ♡ Copying is an act of love.

27 novembre 2010 à 20:59:33

[tosh@sys-tosh /usr/home/tosh/Desktop]$ gcc -std=c89 main.c
main.c: In function 'main':
main.c:8: error: expected expression before '/' token
main.c:7: warning: unused variable 'i'


[tosh@sys-tosh /usr/home/tosh/Desktop]$ gcc -ansi main.c
main.c: In function 'main':
main.c:8: error: expected expression before '/' token
main.c:7: warning: unused variable 'i'
[tosh@sys-tosh /usr/home/tosh/Desktop]$ gcc -ansi main.c
  • Partager sur Facebook
  • Partager sur Twitter
27 novembre 2010 à 21:11:58

Désolé mais sur quel norme se base GCC pour compiler un code si on ne précise pas la norme?
  • Partager sur Facebook
  • Partager sur Twitter

🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles  - ♡ Copying is an act of love.

27 novembre 2010 à 21:14:46

compile avec -W (et pas -w, j'insiste) -Wall (ou -Wextra)

;)
  • Partager sur Facebook
  • Partager sur Twitter
27 novembre 2010 à 21:15:36

Salut,

C'est parce que par défaut gcc compile avec l'option -std=gnu89, le "dialecte GNU" du C90. Ce dernier permet, entre autre, d'inclure des commentaires de type // ;)

Citation : man gcc


-std=

[...]

A value for this option must be provided; possible values are

[...]

gnu89
GNU dialect of ISO C90 (including some C99 features). This is the default for C
code.

  • Partager sur Facebook
  • Partager sur Twitter
27 novembre 2010 à 21:20:00

D'après le man, par défaut, c'est -std=gnu89 qui est utilisé.

grilled.
  • Partager sur Facebook
  • Partager sur Twitter
27 novembre 2010 à 21:44:49

Ok c'est la man de GCC qu'il fallait regarder. Merci problème résolut.
  • Partager sur Facebook
  • Partager sur Twitter

🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles  - ♡ Copying is an act of love.

31 août 2013 à 19:58:02

j'ai le même problème ,es que il ya quelqu'un qui peut m'expliquer de quoi il s'agit exactement cet erreur ?Merci
  • Partager sur Facebook
  • Partager sur Twitter
17 janvier 2024 à 1:21:43

il ne faut juste pas déclarer la variable à incrémenter dans la boucle for.

  • Partager sur Facebook
  • Partager sur Twitter
17 janvier 2024 à 2:18:58

@EliemessiAngemichael Bonsoir, merci de ne pas squatter le sujet des autres, ni de déterrer d'ancien sujet résolu.

Merci de respect des règles du forum à savoir qu'un message commence par des règles de politesses (Un bonjour ou des salutations à la communauté et se termine par des remerciements par avances pour les futures réponses). 

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Manque de Politesse

Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?

Liens conseillés

Je ferme ici.

  • Partager sur Facebook
  • Partager sur Twitter