首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相同的结构不同的文件

相同的结构不同的文件
EN

Stack Overflow用户
提问于 2015-05-14 19:30:31
回答 1查看 88关注 0票数 1

我有个小问题。我有两个文件: one.c和two.c,它们都是decler并实现了struct: StackNode,头文件是: one.h:

代码语言:javascript
运行
复制
 #ifndef ONE_H
 #define ONE_H

 typedef struct StackNode StackNode;
 #endif

二.h:

代码语言:javascript
运行
复制
 #ifndef TWO_H
 #define TWO_H

 #include "one.h"

 #endif

cpp文件: one.c:

代码语言:javascript
运行
复制
 #include <stdio.h>
 #include <malloc.h>
 #include <string.h>
 #include <stdlib.h>
 #include "one.h"

 struct StackNode
 {
   ........
 };

二.c:

代码语言:javascript
运行
复制
 #include <stdio.h>
 #include <malloc.h>
 #include "two.h"
 struct StackNode
 {
   ........
 };

为什么这是在linox中编译和运行的,但在视觉上却是这样的: two.obj : error LNK2005:"struct StackNode * top“(?top@@3 3PAUStackNode@@A)已经定义在one.obj 1>c:\users\documents\visual studio 2010\Projects\Exercise\Debug\Exercise.exe :致命错误LNK1169:一个或多个已找到的乘法定义符号。

我能做什么,这样它也会在视觉上工作吗?谢谢您:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-14 19:43:55

链接器没有说结构本身被定义了两次。它说对象top被定义了两次,类似于struct StackNode * top。您必须只在一个编译单元中定义它。

two.obj : error LNK2005:"struct StackNode * top“(?top@@3 3PAUStackNode@@A)已在one.obj中定义

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30245743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档