Printf et scanf sont des fonctions, dont la déclaration figure dans stdio.h.
quand on compile ce code source
int main()
{
printf("hello\n");
return 0;
}
il y a une bordée d'avertissements
cc a.c -o a
a.c: In function ‘main’:
a.c:3:9: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
3 | printf("hello\n");
| ^~~~~~
a.c:1:1: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
+++ |+#include <stdio.h>
1 | int main()
a.c:3:9: warning: incompatible implicit declaration of built-in function ‘printf’ [-Wbuiltin-declaration-mismatch]
3 | printf("hello\n");
| ^~~~~~
a.c:3:9: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
Ce ne sont pas (*) des erreurs (fatales) pour la compilation, mais il faut absolument en tenir compte.
(*) Sauf si les options de compilation disent de considérer les avertissements comme des erreurs, ce qui est la sagesse même.
- Edité par michelbillaud 24 novembre 2023 à 12:38:04
En plus de l'inclusion de l'entête stdio.h comme le dit michelbillaud, comme la capture montre que oliviermessii utilise Visual Studio, il va ensuite rencontrer un autre problème du type de celui-ci :
avec un beau message "Error 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details."
et il faudra, pour que son code en C standard veuille bien être compilé qu'il mette, avant le #include <stdio.h> la directive :
Error 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details." ?
Dlks a écrit:
En plus de l'inclusion de l'entête stdio.h comme le dit michelbillaud, comme la capture montre que oliviermessii utilise Visual Studio, il va ensuite rencontrer un autre problème du type de celui-ci :
avec un beau message "Error 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details."
et il faudra, pour que son code en C standard veuille bien être compilé qu'il mette, avant le #include <stdio.h> la directive :
#define _CRT_SECURE_NO_WARNINGS
- Edité par oliviermessii 25 novembre 2023 à 1:43:34
et il faudra, pour que son code en C standard veuille bien être compilé qu'il mette, avant le #include <stdio.h> la directive :
#define _CRT_SECURE_NO_WARNINGS
Ça veut dire que Visual C te demande d'utiliser les fonctions sécurisées scanf_s de préférence, Et que si tu veux utiliser scanf, il faut définir cette constante _CRT_SECURE_NO_WARNINGS.
Donc tu écris en haut du fichier source avant les directives include :
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent