头文件进行函数声明;(一个头文件二个源文件)
其中一个源文件进行函数定义;(文件中有#include“头文件”)
问题在包含main()函数源文件报错:函数未定义(#include“头文件”)
头文件的代码
struct Heap;
typedef struct Heap *H;
H Initialize (H heap );
int Isfull (H heap);
int Isempty( H heap);
void Insert (H heap ,int num);
void DeleteMin(H heap);
void printf_all (H heap);
struct Heap
{
int Capacity; //数组容量
int Size; //当前数量
int* List;
};
定义函数的源文件代码
H Initialize (H heap)
{
if(!heap)
return heap;
heap =(H)malloc(sizeof(struct Heap));
if(!heap)
{
perror("malloc error") ;
exit(EXIT_FAILURE);
}
heap->List=(int)malloc((Cap+1)sizeof(int));
if(!heap->List)
{
perror("malloc error") ;
exit(EXIT_FAILURE);
}
else
{
heap->Capacity=Cap;
heap->Size=0;
heap->List[0]=INT_MIN;
}
return heap;
}
int Isempty (H heap)
{
return !!(heap->Size0);
}
int Isfull(H heap)
{
return !!(heap->CapacityCap);
}
void Insert (H heap, int num)
{
int i;
if(!heap)
{
perror("heap is empty") ;
exit(EXIT_FAILURE);
}
for(i=heap->Size+1;heap->List[i/2]>num;i/=2)
heap->List[i]=heap->List[i/2];
heap->List[i]=num;
}
void DeleteMin(H heap)
{
int i,child;
int Min,Max;
if(!heap)
{
perror("heap is empty") ;
exit(EXIT_FAILURE);
}
Min=heap->List[1];
Max=heap->List[heap->Size-1];
for(i=1;i=2<=heap->Size;i=child)
{
child=i2;
if(heap->Size>child&&heap->List[child]>heap->List[child+1])
child++;
if(Max>heap->List[child])
heap->List[i]=heap->List[child];
else
break;
}
heap->List[i]=Max;
}
void printf_all (H heap)
{
for(int i=1;(heap->Size+1)>i;i++)
printf("1");
}
包含main()源文件代码
int main()
{
struct Heap *heap=NULL;
heap=Initialize(heap);
int n=0;
while(scanf("%d",&n)==1)
{
Insert(heap,n);
}
printf_all(heap);
}
函数名字写错了? 把两个文件的内容放在同一个文件里编译会报错吗
undefined reference to‘ 函数名字 ’
dev本身问题,重新创建一个新项目没有问题了。
根据您提供的代码,出现函数未定义的错误可能是由于以下原因导致的:
头文件的条件编译问题:在头文件中,您使用了条件编译指令来避免头文件的重复包含。确保在头文件的开头和结尾都有相应的条件编译指令。在代码示例中,缺少了#endif来结束条件编译的部分。请确保头文件的最后加上#endif,并且条件编译的宏名与头文件的宏名一致。
头文件的重复包含问题:确认头文件在源文件中只包含一次。如果在源文件中多次包含同一个头文件,会导致函数重定义的错误。请检查您的源文件,确保Header.h只被包含一次。
头文件的路径问题:确保头文件的路径是正确的,并且与源文件在同一目录下或者使用正确的相对路径。如果头文件的路径不正确,编译器将无法找到头文件中的函数声明,导致函数未定义的错误。
请仔细检查上述问题,并进行相应的修正。如果问题仍然存在,请提供更详细的错误信息或代码示例,以便更好地帮助您解决问题。
https://blog.csdn.net/Blateyang/article/details/80960775这个贴是解决方法。
– mintierr 1年前