我将是你知道如何在那里办理兴趣碰撞的版本号为新版本问题.
如何处理相关文件中的版本号,如手册页等.
该软件使用gnu工具链构建,因此autoconf,automake等可用,并用于应用程序的版本号.这样信息就可以重复使用了.
git用作vcs.
一种可能性是在Makefile.am中引入一个额外的新目标,它使用sed/awk来替换所有相关文件中的版本号和日期.该目标可以在开发新版本时(在分支之后)调用一次.
然后,当人们进行项目的git克隆或者发布tar tar时,项目可以使用正确的信息构建.当然,在开始开发新版本时,必须记住运行此make目标.
另一个选择是使用dist目标的钩子进行sed/awk替换.但这会使项目的git存储库处于没有正确版本号与关联文件关联的状态.
我更喜欢做第一个解决方案,因为它还在git历史记录中记录了正确的版本号.
在进行sed/awk替换时,您更喜欢"在文件中"或使用autoconf/automake工具中的模板文件.我看到两种方法的优点和缺点.
你如何处理相关文件的版本控制.您是否在开发阶段开始更改它们,是否在发货前更改它们,是否更换了infile或者您更喜欢使用模板?
谢谢.
我有一些代码在Mac OSX和Linux(Ubuntu,Fedora,...)下表现不同.这是关于printf语句中的算术运算中的类型转换.代码使用gcc/g ++编译.
下列
#include <stdio.h>
int main () {
float days = (float) (153*86400) / 86400.0;
printf ("%f\n", days);
float foo = days / 30.6;
printf ("%d\n", (int) foo);
printf ("%d\n", (int) (days / 30.6));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在Linux上生成
153.000000
5
4
Run Code Online (Sandbox Code Playgroud)
在Mac OSX上
153.000000
5
5
Run Code Online (Sandbox Code Playgroud)
为什么?
令我惊讶的是,这适用于Mac OSX和Linux
printf ("%d\n", (int) (((float)(153 * 86400) / 86400.0) / 30.6));
printf ("%d\n", (int) (153 / 30.6));
printf ("%.16f\n", (153 / 30.6));
Run Code Online (Sandbox Code Playgroud)
为什么?我根本没有任何线索.谢谢.