This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Compiler/EK-TM4C1294XL:自有源文件-错误#1.0234万-D

Guru**** 2051860 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/638844/compiler-ek-tm4c1294xl-own-source-file---error-10234-d

部件号:EK-TM4C1294XL

工具/软件:TI C/C++编译器

您好,

我编写了一段源代码,并且我有.h和.c文件,这些文件在编译时不会出现错误。 只要我在主代码中插入void或类似内容,我就会收到错误消息,指出未解析的符号仍然存在。  

c代码:

#include <stdint.h>

#define pool_length 32
UINT32_t list[pool_length];
//------------------
#define struct poolobject_t
{
UINT32_t*值;
struct poolobject_t* next;

} poolobject;
//------------------
poolobject pointer[pool_length];
poolobject* available;
poolobject* available _tail;
poolobject* usedup;
poolobject* usedup_tail;
//----------------
void setUpPool()
{
int i;
对于(i=0;i<pool_length-1;i++)
{
指针[I].NEXT =指针[I+1];
}
指针[pool_length-1].next = 0;
可用=指针[0](&P);
可用尾部=指针(&P)[pool_length-1];
使用时间= 0;
usedup_tail = 0;
}//------------------

UINT32_t* GetObject()
{
poolobject*临时;
如果(可用!=0)
{
TEMP =可用;
可用=可用->下一个;
IF (usedup=0)
{
usedup =温度;
usedup_tail =临时;
}
否则
{
usedup_tail->next =temp;
usedup_tail = usedup_tail->next;
}
返回temp ->值;
}
否则返回0;}//------------------


void releaseObject(UINT32_t *obj)
{
IF (使用重复!=0)
{
poolobject* ptr =使用重复;
usedup = usedup->下一个;
ptr ->值= obj;
如果(可用== 0)
{
可用= PTR;
可用尾部= ptr;
}
否则
{
可用尾部->下一个= ptr;
可用尾部=可用尾部->下一个;
}
}
}

h代码:

#include <stdint.h>

void setUpPool();
//typedef poolobject_t;
//void setUpPool();
extern UINT32_t* GetObject();
extern void releaseObject(UINT32_t *obj);

有人能告诉我我做了什么错误/缺失了什么吗?

Jonas。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将指出一些我看到的错误。  但我不会处理每一个错误。

    不要将#define和类似的结构声明混合在一起...

    #define struct poolobject_t

    UINT32_t*值;
    struct poolobject_t* next;
    }
    poolobject;

    这不是使用#define的方式。  在这种特殊情况下,只需删除#define。

    请通读 此常见问题解答 (而不是TI的常见问题解答),了解 声明 和 定义之间的区别,以及它们通常如何在源代码中进行组织。  请注意...

    结构池object_t
    {
    UINT32_t*值;
    struct poolobject_t* next;
    }池对象; 

    ...是一个声明,因此通常出现在头文件中。

    我相信这并不是每一个错误。  但这是一个开始。  我建议您与C领域的专家同事合作。 此论坛不是关于学习C领域的课程

    谢谢,此致,

    -George