web-dev-qa-db-fra.com

Comment activer le mode c99 dans gcc avec le terminal

Je veux activer le mode c99 dans le compilateur gcc pour lire dans d'autres articles de ce forum que -std doit être égal à -std=c99 mais je ne sais pas comment le définir à cette valeur en utilisant la ligne de commande, alors aidez-moi.

12
user297904

Compilez en utilisant:

gcc -std=c99 -o outputfile sourcefile.c

gcc --help répertorie certaines options, pour une liste complète des options, reportez-vous au manuel . Les différentes options pour le dialecte C peuvent être trouvées ici .

Comme vous utilisez make, vous pouvez définir les options de ligne de commande pour gcc en utilisant CFLAGS:

# sample makefile
CC = gcc
CFLAGS = -Wall -std=c99
OUTFILE = outputfile
OBJS = source.o
SRCS = source.c

$(OUTFILE): $(OBJS)
        $(CC) $(CFLAGS) -o $(OUTFILE) $(OBJS)
$(OBJS): $(SRCS)
        $(CC) $(CFLAGS) -c $(SRCS)

Addendum (ajouté fin 2016): C99 vieillit un peu maintenant, les personnes qui consultent cette réponse pourraient vouloir explorer C11 à la place.

32
jpw

Vous pouvez essayer d'utiliser le -std=c99 drapeau.

Essayez de vous conformer comme ceci:

gcc -Wall -std=c99 -g myProgram.c

Notez également que -g est pour l'option de débogage (Merci à Alter Mann de l'avoir signalé).

6
Rahul Tripathi

Sur la base des commentaires sous une autre réponse, vous utilisez peut-être les règles de fabrication implicites et n'avez pas de Makefile. Si c'est le cas, vous exécutez simplement make tst pour générer tst binaire à partir de tst.c. Dans ce cas, vous pouvez spécifier les indicateurs en définissant la variable d'environnement CFLAGS. Vous pouvez le définir pour le shell actuel ou l'ajouter à votre ~/.bashrc pour l'avoir toujours, avec ceci:

export CFLAGS='-Wall -Wextra -std=c99'

Ou en le spécifiant uniquement pour la commande unique:

CFLAGS='-Wall -Wextra -std=c99' make tst

(Remarque: j'ai également ajouté des indicateurs d'avertissement, vous devez vraiment les utiliser, ils détecteront de nombreux bogues potentiels ou tout simplement du mauvais code que vous devriez écrire différemment.)

2
hyde