vs2015编译的时候怎么确认每个c文件中全局变量的位置

yfannnnn 2020-12-17 04:30:03
比如某个a.h的第一个全局变量g_temp,怎么确认这个全局变量前面是哪个c文件的那个全局变量。vs可以确认吗?或者通过工程环境可以确认吗?
...全文
214 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
an_bachelor 2020-12-19
  • 打赏
  • 举报
回复
引用 4 楼 yfannnnn 的回复:
[quote=引用 2 楼 陈仲甫 的回复:]你想说的是初始化顺序吧 同一个编译单元(文件)内保证顺序 不同文件之间不保证 所以你可以把你的全局变量放到一起作为一个类的普通成员,并且用singleton模式保证它的实例全局只有一份, 也可以直接用COM的IGlobalInterfaceTable 注册一个接口 接下来进程内通过同样类型ID获得的都是它
我们有好几十个.c文件啊,你说的这个方法,我们没法操作,按我自己的理解,只要代码不动,全局变量在内存中的位置就不会动的,也就是说,每次重新编译位置都固定,应该是有规律去找位置是怎么放置的。[/quote] 几十个文件没关系 可以用extern关键字来引用 如果你只是要保证其相对位置,把它们全部放一个结构里头,指定对齐方式,只要知道这个结构的基地址,绝对可以确定前一个是什么后一个是什么。。这样等于把一组全局变量变成一个全局结构 同一个编译器,同样的环境、同样的文件,应该会有相同的实际编译顺序,但既然标准规定可以有不同顺序,我不理解你们为何会执着于留下这种明显的定时炸弹?
yfannnnn 2020-12-18
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
VS 可以在连接选项中 打开输出 映射文件 .map
能具体说说怎么操作吗, 我刚刚百度把map文件输出了,但是有个问题,在我的.c文件中放在一起的2个全局变量,在map文件中地址却没有挨着,按我的理解,c文件中放在一起的2个全局变量,应该是挨着分配内存的啊
yfannnnn 2020-12-18
  • 打赏
  • 举报
回复
引用 2 楼 陈仲甫 的回复:
你想说的是初始化顺序吧 同一个编译单元(文件)内保证顺序 不同文件之间不保证 所以你可以把你的全局变量放到一起作为一个类的普通成员,并且用singleton模式保证它的实例全局只有一份, 也可以直接用COM的IGlobalInterfaceTable 注册一个接口 接下来进程内通过同样类型ID获得的都是它
我们有好几十个.c文件啊,你说的这个方法,我们没法操作,按我自己的理解,只要代码不动,全局变量在内存中的位置就不会动的,也就是说,每次重新编译位置都固定,应该是有规律去找位置是怎么放置的。
yfannnnn 2020-12-18
  • 打赏
  • 举报
回复
引用 2 楼 陈仲甫 的回复:
你想说的是初始化顺序吧 同一个编译单元(文件)内保证顺序 不同文件之间不保证 所以你可以把你的全局变量放到一起作为一个类的普通成员,并且用singleton模式保证它的实例全局只有一份, 也可以直接用COM的IGlobalInterfaceTable 注册一个接口 接下来进程内通过同样类型ID获得的都是它
我们是linux的程序,在vs下也做了一个不需要硬件就可以模拟跑的程序,现在的问题是某个.c文件,头文件下的第一个全局变量被踩了,不知道是谁踩得,想看看这个全局变量前后的是那些全局变量,然后加相关log验证一下。
an_bachelor 2020-12-17
  • 打赏
  • 举报
回复
你想说的是初始化顺序吧 同一个编译单元(文件)内保证顺序 不同文件之间不保证 所以你可以把你的全局变量放到一起作为一个类的普通成员,并且用singleton模式保证它的实例全局只有一份, 也可以直接用COM的IGlobalInterfaceTable 注册一个接口 接下来进程内通过同样类型ID获得的都是它
zgl7903 2020-12-17
  • 打赏
  • 举报
回复
VS 可以在连接选项中 打开输出 映射文件 .map

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧