Я изучаю c (программирование в ANSI c -> пятое издание) и сталкиваюсь со следующей проблемой:
Я реализую одну программу с указателями на функции
#include<stdio.h>
//void swap (int *a, int *b); //function declaration
int main()
{
int m = 25;
int n = 100;
printf("m is %d, n is %d\n", m, n);
swap(&m, &n); //calling a function
printf("m is %d, n is %d\n", m, n);
return 0;
}
void swap (int *a, int *b) //function implementation
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
в вышеприведенной программе прокомментируйте строку void swap (int *a, int *b);
, затем файл запуска программы, но дайте одно предложение здесь, сталкиваясь с проблемой , почему здесь дают предложение
main. c: 10: 3 : warning: неявное объявление функции 'swap' [-Wimplicit-function-объявление]
main. c: 16: 6: warning: конфликтующие типы для 'swap'
main. c: 10: 3: примечание: предыдущее неявное объявление 'swap' было здесь
m равно 25, n равно 100
m равно 100, n равно 25
когда я раскомментирую эту строку void swap (int *a, int *b);
, тогда программа работает нормально
#include<stdio.h>
void swap (int *a, int *b); //function declaration
int main()
{
int m = 25;
int n = 100;
printf("m is %d, n is %d\n", m, n);
swap(&m, &n); //calling a function
printf("m is %d, n is %d\n", m, n);
return 0;
}
void swap (int *a, int *b) //function implementation
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
, проблема в том, почему не разрешено это в вышеуказанной программе
void swap (int, int); //function declaration
и выдайте ошибку
ошибка:
конфликтующие типы для 'swap' void swap (int * a, int * b) // реализация функции
* 10 37 * но в книге пример допустим
![enter image description here](https://i.stack.imgur.com/nTWp4.png)