エラーが表示されます:
main.o(.text+0x1ed): In function `main':
: undefined reference to `avergecolumns'
collect2: ld returned 1 exit status
gcc * .oの場合このエラーの原因はよくわかりません。他のポスターは、関数が見つからないか、関数が空であると説明しています。誰かが明確にしたり洗練したりすることができれば、それは大歓迎です!
ここに私の関数のコードがあります(2D配列の列の平均を計算しようとしています):
#include "my.h"
void averagecolumns (int x, int y, int** a)
{
int i;
int j;
float sum;
float colAvg;
sum = 0;
colAvg = 0;
printf("i. The column averages are: \n");
for(i = 0; i < x; i++)
{
for(j = 0; j < y; j++)
{
sum += a[i][j];
colAvg = sum / (float)x;
}
printf("Column: %3d, Average: %6.2f", j, colAvg);
sum = 0;
colAvg = 0;
}
Mainの関連部分は次のとおりです。
#include "my.h"
int main (int argc, char* argv[])
{
int** a;
float** colAvg;
int ROWS;
int COLS;
int i;
int j;
int** table;
FILE* fpmyfile;
int closeResult;
....
printme (ROWS, COLS, a); // call functions a - j
oddvalues (ROWS, COLS, a);
oddlocations (ROWS, COLS, a);
countoddrows (ROWS, COLS, a);
addrows (ROWS, COLS, a);
findfirstsmall (ROWS, COLS, a);
findlastlarge (ROWS,COLS, a);
addcolumns (ROWS, COLS, a);
avergecolumns (ROWS, COLS, a);
....
}
また、これはリンカまたはコンパイルエラーです(どのタグを追加するのかわかりませんでした)。
リンカーエラーです。 ld
はリンカーであるため、「ld return 1 exit status」で終わるエラーメッセージが表示された場合、それはリンカーエラーであることを示しています。
エラーメッセージは、リンクしているオブジェクトファイルにavergecolumns
の定義が含まれていないことを示しています。その理由は、定義した関数がaveragecolumns
と呼ばれるためです(言い換えると、関数を呼び出すときに関数名のスペルを間違えました(おそらくヘッダーファイルでも-そうでない場合は、コンパイル時の別のエラー))。