C 获取错误“;在功能上'_开始';:(.text+;0x20):对“main'&引用;无法使用类似问题的答案来解决

C 获取错误“;在功能上'_开始';:(.text+;0x20):对“main'&引用;无法使用类似问题的答案来解决,c,linux,main,C,Linux,Main,我是c新手,在函数“_start”中不断遇到此错误:(.text+0x20):对“main”的未定义引用。我知道这是一个常见的错误,但无法使用其他答案来解决 我正试图编译我的“main.c”和“memcheck.h” 我的主要意见是: #include <stdio.h> #include <stdlib.h> #include "memcheck.h" int main () { int *ptr; ptr = malloc(sizeof(*ptr))

我是c新手,在函数“_start”中不断遇到此错误:(.text+0x20):对“main”的未定义引用。我知道这是一个常见的错误,但无法使用其他答案来解决

我正试图编译我的“main.c”和“memcheck.h”

我的主要意见是:

#include <stdio.h>
#include <stdlib.h>
#include "memcheck.h"


int main () {
  int *ptr;

    ptr = malloc(sizeof(*ptr));
    free(NULL);
return 0;
}

void *memcheck_malloc (size_t size, char *file, int line){
return NULL;
}
void memcheck_free (void *ptr, char *file, int line){
}
由于以下原因,您没有main()函数:

#define main memcheck_main

我不确定你想用它实现什么。

我相信你正在制作一个内存泄漏调试工具

只需删除:

#undef malloc
#undef free
不要重新定义你的主要功能

#define main memcheck_main

否则,您也可以使用“Valgrind”来测试内存泄漏(以及更多)。您会遇到这个问题,因为编写与标准库函数同名的宏是一个非常愚蠢的想法。您也不能
#取消定义
函数。也不能用具有不同函数签名的函数替换它们。执行此操作的适当方法是编写包装器函数。
#undef malloc
#undef free
#define main memcheck_main