incompatible déclaration implicite de la fonction "printf"

J'ai un gros problème.
C'est l'en-tête de fichier que j'ai créé pour avoir un peu de menu terminal.
Le problème est dans la fonction "menu" (nom italien) , que quand je compile, je reçois un avertissement qui dit que
"[Avertissement] incompatible déclaration implicite de la fonction intégrée 'printf' [activé par défaut]"
Et puis, si je le lance il plante.

#ifndef HEADER
#define HEADER
int numeroOpz = 0;
int selezON = 0;
int tasto;
struct Opzione{
char *testo;
int selez;
};
struct Opzione *opz;
void nuovaOpzione(char *testoOpz){
strcpy(opz[numeroOpz].testo, testoOpz);   //Il testo dell'opzione viene copiato
opz[numeroOpz].selez = 0;          //Nessuna opzione viene inizialmente selezionata
numeroOpz++;
}
void menu(){
opz[0].selez = 1;
while(tasto != 13){
int i;
for(i=0;i < numeroOpz;i++){
if(opz[i].selez == 1){
printf("||%s||\n", opz[i].testo);
}
else if(opz[i].selez == 0){
printf("%s\n", opz[i].testo);
}
tasto = getch();
switch (tasto){
case 72:  //SU
if(selezON > 0){
opz[selezON].selez = 0;
opz[selezON-1].selez = 1;
selezON--;
}
else{
opz[selezON].selez = 0;
opz[numeroOpz-1].selez = 1;
}
break;
case 80:  //GIU
if(selezON < numeroOpz){
opz[selezON].selez = 0;
opz[selezON+1].selez = 1;
selezON++;
}
else{
opz[selezON].selez = 0;
opz[0].selez = 1;
}
break;
default:
printf("Error\n\n\n\n");
break;
}
}
}
}
#endif

Et VOICI le fichier source:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Opzioni.h"
int main(){
nuovaOpzione("Ciao");
nuovaOpzione("Bellaaa");
nuovaOpzione("Hey");
menu();
getch();
return 0;
}

Je suis juste fou, et oui, j'ai beaucoup cherché de l'aide dans d'autres questions...
Merci pour votre aide si vous en avez! 😛

btw: la fonction strcpy dans "nuovaOpzione" est un avertissement, mais yolo...

  • Ne pas mettre de corps de la fonction dans vos fichiers d'en-tête.
  • Avez-vous une définition de fonction dans votre fichier d'en-tête? Si oui, il doit être déplacé vers le fichier source.
  • Qu'est-ce que votre compilateur/linker commande ressembler?
  • Bien que #include <stdio.h> n'est pas dans "Opzioni.h", #include <stdio.h> est inclus dans le principal.c avant de faire #include "Opzioni.h", de sorte que cet avertissement est inattendu. Je pense que ce qui est affiché diffère de l'OP de la compilation ou de l'autre .c fichier comprend "Opzioni.h" sans précédent #include <stdio.h>.
  • Aussi suspecte d'avertissement avec des mots "built-in" pour décrire printf().
  • Compiler le code indiqué dans la question n'est pas de produire le message d'erreur signalé. (Un message sur getch est produite.) Il est probable que le code indiqué dans la question est de pas le code que vous avez utilisé le compilateur lorsque le message sur printf a été produit. Pour déclarer getch, vous devriez probablement #include <curses.h> avant d'utiliser getch. Si vous recevez toujours un message sur printf, vous devez vérifier attentivement que les fichiers de compilation sont exactement celles qui sont affichées dans cette question.
  • strcpy function in "nuovaOpzione" is a warning as well est une preuve supplémentaire que les codes affichée diffère de l'OP de la compilation pour des raisons similaires sur printf() avertissement . Le code principal comprend <string.h> un la waring est inattendu. OP, merci de poster votre code réel.

InformationsquelleAutor DmitryB | 2013-12-10