Моя среда разработки DEV C ++ постоянно выдает мне сообщение: «Id вернул 1 состояние выхода» и «неопределенная ссылка на» функцию (int, int) «. Как это исправить?

Вот мой код

#include <stdio.h>
#include <conio.h>

int func(int , int);
main(){
int m[3][3]={(0,0,0),
(0,0,0),
(0,0,1)};
int n=3,a;
a=func(m[3][3], n);
if(a==1) printf("True");
else printf ("False");
getch();
}

int func(int m[3][3], int n)
{
int i, j, k=0;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
if(m[i][j]==1) k=1;

return k;

}

Где я ошибаюсь? Сообщение IDE:
Funk.cpp :(. Text + 0x4b): неопределенная ссылка на `func (int, int) ‘
[Ошибка] ld вернул 1 статус выхода

-3

Решение

Прототип функции и определение func не совпадает Отсюда и ошибка. Исправьте это, изменив прототип функции на

int func(int[3][3], int);

Следующая ошибка в том, что это:

a=func(m[3][3], n);

следует изменить на

a=func(m, n);

как вы хотите передать массив, вместо недопустимого расположения в памяти за пределами массива.


И я думаю, что вы хотели

int m[3][3]={{0,0,0},
{0,0,0},
{0,0,1}};

вместо

int m[3][3]={(0,0,0),
(0,0,0),
(0,0,1)};

Кроме того, лучше использовать стандартное определение mainто есть изменить

main(){

в

int main(void) {
2

Другие решения

Линкер ожидает определение за int func(int, int); но вы этого не предоставили.

Вы вызываете эту функцию в строке a=func(m[3][3], n);

Функция func в конце вашего источника неверные типы аргументов. Вы, очевидно, используете компилятор C ++ (вы хотите это сделать?), Так как функция перегрузка не поддерживается в C.

0

По вопросам рекламы [email protected]