- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
背景故事:我在尝试解决时间转换问题。我正在处理的程序使用内部日期表示。日期表示为自 2000/01/01 以来的秒数。该数字在程序中是恒定的。我的猜测是,它不应该,因为该数字可能取决于时区。
我做了一个简单的程序,测试自 2000/01/01 的 unix 纪元开始以来的秒数在不同机器上是否不同:
struct tm tm_date;
time_t t_LongDate;
tm_date.tm_year = 2000 - 1900;
tm_date.tm_mon = 1 - 1;
tm_date.tm_mday = 1;
tm_date.tm_hour = 0;
tm_date.tm_min = 0;
tm_date.tm_sec = 0;
t_LongDate = mktime(&tm_date);
printf("result: %lld\n", (long long)t_LongDate);
return 0;
我在我的开发机器上编译了这个程序,它似乎可以工作:
结果:946681200
然后我将二进制文件上传到有问题的主机。这反驳了我的假设。秒数相同:
problematic-host# ./a.out
result: 946681200
因为我是一个可疑的人,所以我尝试在有问题的主机上重新编译程序。没有期望太多,但是:
problematic-host# gcc secSinceEpoch.c
problematic-host# ./a.out
result: 946677600
正如我最初预料的那样 - 时间差了。但是发生了什么事? GCC 是否优化了我的小程序以仅输出一个常数值,因为它不依赖于任何用户输入或随机源?它会在我真正的大程序中做同样的事情吗?有什么方法可以强制它实际运行这些功能吗?
最佳答案
您不会初始化 tm_date
的每个字段,例如 tm_isdst
,因此某些字段具有不可预测的值。修复错误,谜团就会消失。
关于c - GCC过度优化?自纪元开始以来的不同秒数取决于我在哪里编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15127161/
我正在开发适用于 Wordpress 的 PSD,并面临着根据颜色过度对齐背景图像或相反的问题。 在桌面上一切都很好,但在移动设备上背景图像变小了(我使用了 background-size: 100%
在标准 Modelica 流体流量源中,通常指定流量或压力。例如,以下边界设置(P 表示压力边界,F 表示流量边界)通常会围绕管道组件: P - 管道 - P F - 管道 - P 但是,有时在同一侧
我正处于设计基于 Azure 的应用程序的早期阶段。考虑到我可能预期的需求的变化性,Azure 吸引我的地方之一是它的可扩展性。因此,我试图保持事物松散耦合,以便我可以在需要时添加实例。 我看到的关于
我与 Xcode 4 dot notation code sense problem 正好相反!点符号的代码完成不仅显示属性,还显示我的方法(在每个完成的左侧标记 P 或 M 分别指示它是属性还是方法
我是一名优秀的程序员,十分优秀!