【发布时间】:2012-02-29 15:04:50
【问题描述】:
所以我在我的项目的最后一步,我必须从一个函数中返回一个结构,所以我可以在 main.js 中使用它。 相关代码可见:
typedef struct SomeProduct {
int itemNum;
char itemName[21];
double unitPrice;
int stockQty;
int restockQty;
struct SomeProduct *next;
} SProduct;
struct llpro {
SProduct data;
struct llpro *next;
};
////////////////////SKIP LINES to identifier
SProduct findItem(struct llpro *head,int num);
///////////////////SKIP LINES to assignment that fails. head is the proper
////////////////// pointeritemspurchased is an int.
SProduct steve;
steve=findItem(head,newv.itemsPurchased[y]);
//////////////////Skip Lines to method
SProduct findItem(struct llpro *head,int num)
{
while(head!=NULL)
{
if(head->data.itemNum==num)
{
SProduct paul;
paul=head->data;
return paul;
}
}
}
每当我尝试编译它时,我都会收到链接器错误,说它们从未定义过。然后当我取出标识符时,我收到一条消息说 steve 和 paul 是不兼容的类型,即使它们都是 SProducts。请帮忙! 我还想澄清一下,我试图做的是搜索 Sproducts 的链接列表,并从与我正在搜索的那个共享项目编号的那个中提取信息。链接器错误显示“函数 printsum 中对 'findiem' 的未定义引用
【问题讨论】:
-
您也可以添加错误吗?此外,如果
head不是NULL,则findItem中的循环是无限的;原因是你永远不会改变head。 -
我不确定如何添加它们,但是当代码不包含以下行时: SProduct findItem(struct llpro *head,int num);我收到一条消息,指出分配中的类型不兼容。当我这样做时,我会收到一个说链接器错误
-
拥有
struct llpro会有所帮助。现在我们需要确定您将steve分配给paul的位置,反之亦然。 -
您确定 SProduct 实际上是在您尝试使用它的范围内定义的吗?也许你忘记了
# include指令。 -
Steve=findItem(....) 是他被分配给 paul 的地方,因为 paul 被归还。对吗?
标签: c struct variable-assignment