gpt4 book ai didi

C4013 : undefined; assuming extern returning int

转载 作者:行者123 更新时间:2023-11-30 14:45:54 31 4
gpt4 key购买 nike

我正在尝试创建 malloc 函数,在此代码中:

typedef struct hlavicka
{
unsigned int velkost;
struct hlavicka *dalsi;
struct hlavicka *pred;
} HLAVICKA;

struct hlavicka *blok;

void init(void *ptr, unsigned size)
{
blok = ptr;
blok->velkost = 1;
blok->dalsi = blok;
blok->pred = blok;
}

void *memory_alloc(unsigned int size)
{
HLAVICKA *ptr = NULL;
int nova_velkost = size + sizeof(HLAVICKA);
ptr = find_fit(nova_velkost);
if ((long)ptr == -1)
return NULL;
else
{
*(unsigned int *)ptr = size;
return (void *)((char*)ptr + sizeof(HLAVICKA));
}
}

void *find_fit(unsigned int size)
{
HLAVICKA *pom_ptr;
for (pom_ptr = blok->dalsi; (pom_ptr != blok) && (pom_ptr->velkost < size); pom_ptr = pom_ptr->dalsi)
if (pom_ptr != blok)
return pom_ptr;
}

int main()
{
char region[50], *pointer;
init(region, 50);

pointer = (char*)memory_alloc(10);

return 0;
}

我有三个错误:

warning C4013: 'find_fit' undefined; assuming extern returning int
warning C4047: '=' : 'HLAVICKA *' differs in levels of indirection from 'int'
error C2040: 'find_fit' : 'HLAVICKA *(unsigned int)' differs in levels of indirection from 'int ()'

问题出在哪里?结构体类型还是函数类型?

最佳答案

memory_alloc()中,当编译器遇到函数find_fit()时,它不知道任何关于它的信息,因为它是稍后定义的。因此,编译器被迫对 find_fit() 做出假设,而这些假设与您的代码根本不匹配。这就是编译器对你大喊大叫的原因。

解决方案:编译器在进入memory_alloc()之前必须了解find_fit()

  • 要么在 memory_alloc() 之上声明它(或者在 .c 顶部包含的单独的 .h 文件中声明它) > 文件)与行

    void *find_fit(unsigned int size);
  • 或者在memory_alloc()之前定义它,即只需将find_fit()移到它上面

关于C4013 : undefined; assuming extern returning int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52684274/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com