Ответ 1
Вам нужно включить соответствующий заголовок
#include <stdio.h>
Если вы не знаете, какой заголовок стандартная функция определена, функция man page сообщит об этом.
Я знаю, что многие подобные вопросы задавались раньше, но я не мог найти что-то, что исправило бы это предупреждение, которое я получаю:
MyIntFunctions.c:19:2: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
Происходит здесь:
void IntPrint (const void *key)
{
printf("%d", *(int*)key); // line 19
printf("\t-->\t");
}
и аналогичное предупреждение:
MyStringFunctions.c:22:2: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
void StringPrint (const void *key)
{
printf("%s",(char*)key); //line 22
printf("\t-->\t");
}
Я действительно хочу понять, что не так, поэтому я больше не буду этого делать в будущем.
Вам нужно включить соответствующий заголовок
#include <stdio.h>
Если вы не знаете, какой заголовок стандартная функция определена, функция man page сообщит об этом.
Вам нужно включить объявление функции printf()
.
#include <stdio.h>
предупреждение или ошибка типа IMPLICIT DECLARATION заключается в том, что компилятор ожидает Объявление/Прототип функции.
Это может быть либо заголовочный файл, либо ваша собственная функция. Объявление.
Мне нужно было включить #include <string.h>
для printf()
, чтобы не отображать это предупреждение. (GCC 9.2.0)
[[email protected] mybat]$ gcc --version
gcc (GCC) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[[email protected] mybat]$ cat mybat.c
#include <stdio.h>
int main(int argc, char **argv)
{
char *basename;
basename = strrchr(argv[0], '/');
if (basename == NULL)
basename = argv[0];
else
basename++;
printf("%s", basename);
return 0;
}
[[email protected] mybat]$ gcc mybat.c -o mybat
mybat.c: In function ‘main:
mybat.c:7:16: warning: implicit declaration of function ‘strrchr [-Wimplicit-function-declaration]
7 | basename = strrchr(argv[0], '/');
| ^~~~~~~
mybat.c:7:16: warning: incompatible implicit declaration of built-in function ‘strrchr
mybat.c:2:1: note: include ‘<string.h> or provide a declaration of ‘strrchr
1 | #include <stdio.h>
+++ |+#include <string.h>
2 |
Затем с изменением:
[[email protected] mybat]$ vim mybat.c
[[email protected] mybat]$ head -n3 mybat.c
#include <stdio.h>
#include <string.h>
[[email protected] mybat]$ gcc mybat.c -o mybat
[[email protected] mybat]$ ./mybat