C程序中未定义的引用错误
我写了一个C程序pgm.C。它包含一个函数readfile.so。我还编写了一个头文件do.h。然后,我在一个单独的程序ini.c中编写了这个readfile函数,并将do.h包含在这个程序中。当我编译pgm.c时,我得到了错误pgm.c:.text+0x2e:readfile的未定义引用 我的代码是:C程序中未定义的引用错误,c,file,function,undefined-reference,C,File,Function,Undefined Reference,我写了一个C程序pgm.C。它包含一个函数readfile.so。我还编写了一个头文件do.h。然后,我在一个单独的程序ini.c中编写了这个readfile函数,并将do.h包含在这个程序中。当我编译pgm.c时,我得到了错误pgm.c:.text+0x2e:readfile的未定义引用 我的代码是: do.h extern int readfile( FILE *in ); pgm.c #include<stdio.h> #include"do.h"
do.h
extern int readfile( FILE *in );
pgm.c
#include<stdio.h>
#include"do.h"
int main(int argc,char **argv)
{
FILE *in;
in=fopen(argv[1],"r");
readfile(in);
}
ini.c
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <math.h>
#include <float.h>
#include"do.h"
int c;
int readfile( FILE *in )
{
while( c == '#' || c == '\n' )
{
if( c == '#' )
{
while( ( c = getc(in) ) != '\n' );
}
if( c == '\n' )
c = getc( in );
}
if( c == EOF )
break;
else
{
printf("hai");
}
}
return 1;
}
我的程序有错误吗?
由gcc pgm.c编译c区分大小写
extern int readfile( FILE *in );
不声明与相同的函数
int readFile( FILE *in )
选择一个外壳,在任何地方使用它来实现相同的功能。C区分大小写
extern int readfile( FILE *in );
不声明与相同的函数
int readFile( FILE *in )
选择一个外壳并在任何地方使用它来实现相同的功能。您还需要检查fopen的返回值
如果返回NULL,则函数readfile(取决于大小写)将崩溃,您还需要检查fopen的返回值
如果返回NULL,则函数readfile(取决于大小写)将崩溃无需声明函数extern,它们是extern by default用于编译和链接的命令行在哪里?添加完整的行,因为它看起来不使用ini编译和链接。不需要声明函数extern的可能重复项,它们是默认的extern。用于编译和链接的命令行在哪里?添加完整的行,因为看起来您没有编译并链接ini.cpi的可能重复项。在中更改int readfile FILE*in;在do.h.中,但再次得到了相同的eroorIt实现定义,即链接是否区分大小写。您是否阅读了问题下方的评论?你的问题不仅仅在于code@user39133尝试在@user39133中将int readFile FILE*更改为int readFile*,您还需要使用gcc pgm.c ini.ci进行编译。尝试..在中更改int readFile*;在do.h.中,但再次得到了相同的eroorIt实现定义,即链接是否区分大小写。您是否阅读了问题下方的评论?你的问题不仅仅在于code@user39133尝试将中的int readFile FILE*更改为@user39133中的int readFile*您还需要使用gcc pgm.c ini.c进行编译