Недавно я изучал определение функций с помощью файла заголовка в C. Я следил за учебным курсом в Интернете, но столкнулся с проблемой: если я использую командную строку и запускаю исполняемый файл, созданный в папке моего проекта, он принимает входные данные из моего файла main. c и передает его через функцию, например Я ожидал, что это произойдет.
Команда, которую я ввел в командной строке, была: gcc matrix_product.c main.c
Внутри main я могу вызвать функцию (которую я назвал matrix_product), и она ее распознает. Однако, когда я пытаюсь создать его внутри CodeBlocks, компилятор показывает 2 ошибки:
undefined reference to 'matrix_product'
error: ld returned 1 exit status
Это код:
основной. c
#include <stdio.h>
#include <stdlib.h>
#include "matrix_product.h"
#define N 3
int main()
{
int i,j;
int m[N][N]={
{1,2,3},
{4,5,6},
{7,8,9}
};
matrix_product(m,3);
for(i=0;i<N;i++){
if(i==1){printf("M^2 = ");
}else{printf(" ");}
for(j=0;j<N;j++){
printf("%d ",m[i][j]);
}
printf("\n");
}
return 0;
}
матрица_продукт. c
#include <stdio.h>
#include "matrix_product.h"
void matrix_product(int m[][3],int DIM)
{
int i,j,k;
int tmp[DIM][DIM];
for(i=0;i<DIM;i++){
for(j=0;j<DIM;j++){
tmp[i][j]=m[i][j];
m[i][j]=0;
}
}
for(i=0;i<DIM;i++){
for(j=0;j<DIM;j++){
for(k=0;k<DIM;k++){
m[i][j]+=tmp[i][k]*tmp[k][j];
}
}
}
}
matrix_product.h
#ifndef MATPROD
#define MATPROD
void matrix_product(int m[][3],int DIM);
#endif // MATPROD