GCC Avertissement: déclaration implicite de la fonction 'met' est pas valide en C99

Je commence Zed Shaw Apprendre C La Dure. J'ai téléchargé XCode et les Outils de Ligne de Commande. Mais quand je compile le tout premier programme:

int main(int argc, char *argv[]) {
     puts("Hello world."); 
     return 0;
 }

Je reçois cet avertissement:

ex1.c:2:1: attention: la déclaration implicite de la fonction 'met' est non valide
en C99
[-Wimplicit-fonction-déclaration]

Le programme ne compiler et exécuter correctement.

Je suis sur OSX 10.8.3. En entrant 'gcc -v' donne:

À l'aide intégrée dans les specs. Cible: i686-apple-darwin11 Configuré avec:
/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/src/configurer
--disable-vérification de l'option --enable-werror --prefix=/Applications/Xcode.app/Contents/Développeur/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --programme de transformation-nom=/^[cg][^.-]*$/s/$/-4.2/--with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/dst-llvmCore/Développeur/usr/local
--program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-inclure-dir=/usr/include/c++/4.2.1 modèle de Thread: posix version de gcc 4.2.1 (Basé sur Apple Inc. construire 5658) (LLVM construire 2336.11.00)

S'il vous plaît aider.

  • L'utilisation de int main(int argc, char *argv[]) lorsque les arguments sont inutilisés est légèrement stupide; il devrait être int main(void) ou même int main() à la place. Cependant, c'est un débat pour un autre jour, probablement. Je remarque que GCC 5.x utilise C11 (-std=gnu11) comme valeur par défaut mode de compilation. clang (déguisé en gcc) utilise du C99. Les deux C99 et C11 besoin de toutes les fonctions (sauf main()) à être déclarées avant leur utilisation.
InformationsquelleAutor grok12 | 2013-06-01