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.
工具/软件: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