未定义的函数引用和ld返回1退出状态错误。没有语法错误。

时间:2017-09-16 21:46:34

标签: c compiler-errors

我知道这个问题已被多次询问,我已经尝试了所有已发布的解决方案,但对我来说,似乎它不起作用。我不知道这是编译问题还是我做错了。

我正在从' bin.txt'中获取数据。我创建的文件。它包含3x3矩阵0和1(两位数之间没有任何空格)。我想计算有多少个零和一个,根据这个,我想创建一个新的文本文件(在我的代码' encode.txt')并将那些计数的数字写入该文件。

我在CodeBlocks上使用GNU GCC编译器。这是我的代码,如果你发现错别字,那我很抱歉。我不是故意浪费你的时间。任何有关此的帮助和提示都表示赞赏。

#include <stdio.h>
#include <stdlib.h>
#define row 3
#define col 3

int foo(int x, int y);

int main()
 {
   FILE *ptr;
   FILE *encode;
   int i,j,zero=0,one=0;
   int a[row][col];
   ptr=fopen("bin.txt","r");
   encode = fopen("encode.txt","w");

for(i=0;i<3;i++)
{
    for(j=0;j<3;j++)
    {
        fscanf(ptr,"%1d",&a[i][j]);
        if(a[i][j]==0)
        {
            zero++;
        }
        else
        {
            one++;
        }
    }
    foo(zero, one);
    zero=0;
    one=0;
}

/*----------------Print scaned file----------------------------------*/
for(i=0;i<3;i++)
{
    for(j=0;j<3;j++)
    {
        printf("%1d",a[i][j]);
    }
    printf("\n");
}
/*----------- Foo function ----------*/

int foo(int x, int y)
 {
   fprintf(encode,"%d %d",x,y);
   fprintf(encode,"\n");
 }

/*----------- Closing file ----------*/
  fclose(ptr);
  fclose(encode);

  return 0;
  }

构建日志:

mingw32-g++.exe  -o bin\Debug\file_compress.exe obj\Debug\main.o   
obj\Debug\main.o: In function `main':
E:/Code/C/File compression/file_compress/main.c:31: undefined reference to 
`foo'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
2 error(s), 0 warning(s) (0 minute(s), 0 second(s))

1 个答案:

答案 0 :(得分:1)

标准C中不允许使用嵌套函数(尽管GCC提供extension)。你可能不打算使用嵌套函数;将foo()函数的定义移到main()函数之外。