HW: 在一个pthread上运行来自另一个文件的函数?
HW: 在一个pthread上运行来自另一个文件的函数?
我遇到了以下错误:\n
main.o(.text+0x1ed):在函数“main”中: : 对“avergecolumns”的引用未定义 collect2: ld 返回 1 退出状态
\n当我执行gcc *.o命令时出现了这个错误。我不太确定是什么原因导致了这个错误。其他帖子中的回答是该函数未找到或函数为空。如果有人能够澄清或完善一下,将不胜感激!\n这是我的函数代码(我正在尝试计算2D数组中每列的平均值):\n
#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; }
\n主函数的相关部分如下:\n
#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); // 调用函数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); .... }
\n此外,这是一个链接器错误还是编译错误(我不确定应该添加哪个标签)?
问题的出现原因是由于在调用函数时拼写错误导致链接错误。代码中定义的函数名为averagecolumns,而在调用函数时错误地拼写为avergecolumns。链接器在链接时找不到函数的定义,因此出现了ld returned 1 exit status的错误信息。为了避免这种错误,建议使用明确的命名规范,例如使用驼峰式命名或使用下划线分隔单词,这样可以更容易地发现拼写错误。
解决方法:
- 确保在调用函数时拼写正确,与函数定义的名称一致。
- 在定义函数的头文件中也要注意拼写,以避免在编译时出现不同的错误信息。
- 使用明确的命名规范,例如驼峰式命名或下划线分隔单词,可以提高代码的可读性和易于发现拼写错误的能力。
在使用pthread运行一个单独文件中的函数时,出现了链接错误的问题。通过仔细检查代码发现是函数调用时拼写错误导致的。为了避免这种错误,应该注意函数调用时的拼写,并使用明确的命名规范。这样可以提高代码的可读性和可维护性,并减少出现类似错误的可能性。