Próbuję skompilować program C w systemie Linux. Mam oświadczenie #include
dla .Czy opcja -std = c99 uniemożliwi prawidłowe działanie #includes?
Kiedy skompilować program z gcc
następująco:
gcc -std=c99 -g -o progfoo progfoo.c progbar.c
dostaję ostrzeżenia o Implicit declaration of function [srand48, drand48, bzero, or close]
.
Kompilacja zamiast jak:
gcc -g -o progfoo progfoo.c progbar.c
nie daje mi ostrzeżenia, ale nie krzyczeć o moim stosowania for
pętli (co było uzasadnienie do dodawania -std=c99
w pierwszej kolejności).
Wzmianki, w tym <stdlib.h>
, które mam, nie jestem pewien, co jeszcze może być problemem. Pętle for
nie są niezbędne do niczego (były tylko po to, aby zaoszczędzić czas podczas inicjalizacji tablicy), więc nie mam problemu z ich usunięciem, ale zanim to zrobię, chciałbym potwierdzić, czy standard c99
zastępuje jakiś aspekt mojego #include
sprawozdania.
Używam gcc 4.1.2-50 (Red Hat)
.
+1, ale w rzeczywistości są to makra, a nie zmienne. –
Dobra rzecz, @Matteo, mam na myśli _macros_ jako te, które _do_ rzeczy, jak '#define halfOf (x) ((x)/2)', w przeciwieństwie do "flag" do kontrolowania kompilacji. Ale masz rację, a użycie "zmiennej" pracy przeze mnie może doprowadzić do pomylenia z rzeczywistymi zmiennymi. Więc zmieniłem to zgodnie z twoją sugestią. – paxdiablo
Dobrze. Pomocne może być stwierdzenie, że podczas kompilacji bez flagi '-std =', pytasz o '-std = gnu89', która jest C89 plus rozszerzenia GNU - więc odpowiednikiem C99 dla tego trybu jest' -std = gnu99 '. – caf