永发信息网

多文件中的不同函数可以定义相同的指针变量吗?

答案:2  悬赏:0  手机版
解决时间 2021-01-31 09:11
比如我定义一个“sort.cpp”,里面有三个函数,那这三个函数可以有相同的指针变量吗?如果在“output.cpp”里面也有三个函数,那这三个函数可以与“sort.cpp”里的三个函数有相同的指针变量吗?
我的程序执行时出现这样的错误:
--------------------Configuration: mygaokaoxitong - Win32 Debug--------------------
Compiling...
input.cpp
main.cpp
modify.cpp
output.cpp
print_str.cpp
sort.cpp
Linking...
delete.obj : error LNK2005: "int * Code" (?Code@@3PAHA) already defined in analyze.obj
input.obj : error LNK2005: "int * Code" (?Code@@3PAHA) already defined in analyze.obj
judge.obj : error LNK2005: "int * Code" (?Code@@3PAHA) already defined in analyze.obj
main.obj : error LNK2005: "int * Code" (?Code@@3PAHA) already defined in analyze.obj
modify.obj : error LNK2005: "int * Code" (?Code@@3PAHA) already defined in analyze.obj
output.obj : error LNK2005: "int * Code" (?Code@@3PAHA) already defined in analyze.obj
print_str.obj : error LNK2005: "int * Code" (?Code@@3PAHA) already defined in analyze.obj
release.obj : error LNK2005: "int * Code" (?Code@@3PAHA) already defined in analyze.obj
reserve.obj : error LNK2005: "int * Code" (?Code@@3PAHA) already defined in analyze.obj
sort.obj : error LNK2005: "int * Code" (?Code@@3PAHA) already defined in analyze.obj
Debug/mygaokaoxitong.exe : fatal error LNK1169: one or more multiply defined symbols found
执行 link.exe 时出错.

mygaokaoxitong.exe - 1 error(s), 0 warning(s)
最佳答案
链接器允许有类型和名称相同的对象,但要在不同的作用域中,否则会违反唯一定义原则,无法分辨具体应该用哪个对象进行链接。
因此,不能是全局对象。局部对象的定义域是明确的,在不同的函数中可以有不同的同名同类型局部对象(包括参数)。
解决方法
1.在一个编译单元(例如.cpp文件)中定义全局对象,在另外的编译单元中用extern声明(而不是定义)这个对象,以保持唯一性。
2.每个编译单元都定义对象,前面加上static修饰,表示仅在一个编译单元中定义。这样编译器就会认为它们是不同的对象,链接器也不会混淆。
3.限定命名空间。例如在不同的编译单元中
//1.cpp
namespace a
{
int* p;
}
//2.cpp
namespace b
{
int* p;
}
a::p和b::p会被明确认为是不同的对象。
----
特别应当注意,不要在头文件中定义非模板全局对象,否则一旦被多个编译单元包含,定义就会超过一次,于是出错。
====
[原创回答团]
全部回答
可以的,返回结构体指针,比如单链表的初始化函数就是可以这么写的。 struct node *create(int n)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
阿良桌球室地址在哪,我要去那里办事
【变色龙课文】""变色龙""原指?课文用变色龙
立式的洗脸池好还是吊式的好?
如何鉴别ef 70-200mm f/2.8l is ii usm
【武德四年】武德四年是什么意思吗?
2016年中央十三台新闻一加一20160908
碱面对胃好吗
玄酷台球地址有知道的么?有点事想过去
什么是比例?比例的基本性质是什么?怎么解比例
家庭用反渗透净水机好还是超滤好
了解 海尔模盒 的朋友进来看下
显卡风扇很大声
厨房,楼上倒水家里墙脚就往外冒水,非常大,
输卵管造影有危害吗
社会工作的产生阶段,许多赋闲在家的中产阶级
推荐资讯
丹佛的邮编是多少?
充分就业和充分就业量是一个概念吗
我卖2手车给别人;没有过户;出事故该哪个负
惠威d50ht适合唱k吗?
甲数与乙数的和是24,那么,甲数的六分之一与乙
以柱面波形式辐射声波的声源,辐射声波的声压
男脸上痣相图解大全
能用手机驱动的头戴式耳机哪个型号比较好
俄罗斯最大的城市和政治、经济、文化、交通中
新疆科信学院怎么样
中国移动(时代通讯营业厅)(沫若大道南段79号
车票改签怎么改
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?