![]() |
心软的饺子 · 利用 ODP.NET 优化数据访问性能· 2 周前 · |
![]() |
酒量小的投影仪 · .NET 10 运行时中的新增功能 | ...· 昨天 · |
![]() |
玩命的海豚 · Android高级面试题 | 第二计划· 8 小时前 · |
![]() |
酷酷的围巾 · 深圳市宝安区燕罗街道2024年工作总结和20 ...· 3 月前 · |
![]() |
小胡子的日光灯 · 睿睿老师领跳广场舞《我的九寨》纯净悠扬的歌声 ...· 12 月前 · |
![]() |
干练的围巾 · 京广高铁年底实现大贯通 票价或千元性价比不高 ...· 1 年前 · |
![]() |
傻傻的瀑布 · MTK强解BL锁教程_哔哩哔哩_bilibili· 1 年前 · |
![]() |
心软的饺子 · 利用 ODP.NET 优化数据访问性能 2 周前 |
![]() |
玩命的海豚 · Android高级面试题 | 第二计划 8 小时前 |
![]() |
傻傻的瀑布 · MTK强解BL锁教程_哔哩哔哩_bilibili 1 年前 |
不知道volatile关键字有没有这个效果
反正我知道用dllexport导出全局变量,肯定可以保证不被优化掉
[/Quote]
dll导出是一个便捷方法
如果有编译器开关就更好了
引用 6 楼 akirya 的回复:
引用 5 楼 flysnowxg 的回复:
不报错也不报警告
我只需要用全局对象分散执行一些代码而已
一个cpp里面的
vector<int> g_needinital;
另一个cpp里面(很cpp有类似的定义,
extern vector<int> g_needinital;
class CAddData
[/Quote]
1. CAddData g_adddata最好不要整成全局的
2. 全局变量一般是要独立存在的,即一个全局变量不要依赖于另外一个全局变量,否则就很容易出现楼主碰到的问题。
引用 10 楼 flysnowxg 的回复:
我也觉得绝对不应当被优化掉
但实际情况下有时就是没执行
不过vs有时也会出一些更离谱的问题,比如代码重编了还说代码已经过期
不知道是编译器不严谨还是环境配的有问题
clean rebuild试试
[/Quote]
rebuild有时是好的
但是这样总是让人担心有时会不会掉了什么东西,不放心啊
试试volatile吧,另外CAddData g_adddata;
这个可以不用全局的
[/Quote]
帖子引错了
就是为了方便才全局的
主要为了不需要为了加个消息,还要跑到别处去改一下代码
我也觉得绝对不应当被优化掉
但实际情况下有时就是没执行
不过vs有时也会出一些更离谱的问题,比如代码重编了还说代码已经过期
不知道是编译器不严谨还是环境配的有问题
[/Quote]
就是为了方便才全局的
主要为了不需要为了加个消息,还要跑到别处去改一下代码
我也觉得绝对不应当被优化掉
但实际情况下有时就是没执行
不过vs有时也会出一些更离谱的问题,比如代码重编了还说代码已经过期
不知道是编译器不严谨还是环境配的有问题
[/Quote]
clean rebuild试试
g_needinital只要用函数返回就不会有初始化问题了
vector<int>&
getneedintialdata
static vector<int> g_needinital;
return g_needinital;
}
这个可以不用全局的
但实际情况下有时就是没执行
不过vs有时也会出一些更离谱的问题,比如代码重编了还说代码已经过期
不知道是编译器不严谨还是环境配的有问题
引用 5 楼 flysnowxg 的回复:
不报错也不报警告
我只需要用全局对象分散执行一些代码而已
一个cpp里面的
vector<int> g_needinital;
另一个cpp里面(很cpp有类似的定义,
extern vector<int> g_needinital;
class CAddData
public:
CAddData(){g……
[/Quote]
有自己写的构造函数,这个不应该被优化掉。
但全局对象的构造顺序是不确定的,没法保证一定先g_needinital,然后g_adddata
仅仅定义了一个全局对象,没有任何引用,release半刻呢定会优化掉。
你的意思是说CAddData的构造函数从没有被调用过是吧,就是这样的。
不报错也不报警告
我只需要用全局对象分散执行一些代码而已
一个cpp里面的
vector<int> g_needinital;
另一个cpp里面(很cpp有类似的定义,
extern vector<int> g_needinital;
class CAddData
public:
CAddData(){g_needinital.push_back(10)……
[/Quote]
这种代码肯定不会被优化掉。
我只需要用全局对象分散执行一些代码而已
一个cpp里面的
vector<int> g_needinital;
另一个cpp里面(很cpp有类似的定义,
extern vector<int> g_needinital;
class CAddData
public:
CAddData(){g_needinital.push_back(10);}
CAddData g_adddata;
有时发现g_adddata没被执行
这只是个例子,实际情况是我要分散做消息注册
所以我觉得这样的代码不应当被优化掉,编译器不该做这个工作
但又说没被引用,什么意思?到底是用到了还是没用到?没被用到的,你怎么知道没被连接呢?从一开始就不存在,编译器最多给个warning,不会报连接错误呀。
反正我知道用dllexport导出全局变量,肯定可以保证不被优化掉
warning能否发现未被使用的变量??
[/Quote]
全局变量不报这个警告
因为全局变量一般是在其他编译单元被引用
如果没被引用,他再哪里报警告