当有多个人共用一台机器时,一般是大型服务器,若有其中一个人把时间date往后改了,比如今天是20号,他把时间改到22号了,那么你再编译文件main.cpp时,生成的main.o文件就是22号的。
(问题1):当他再把时间改回到20号的时候,你又修改了main.cpp文件想重新编译,可是文件修改时间是20号,而.o文件是22号,编译器就忽略该修改,不编译修改的文件。
因此修改日期是个很恶心的事,可能导致修改的代码不编译或者每次都编译。解决方法是在svn更新代码前将时间改回来,或者重新编译修改文件前将时间改回来(或者将对应的.o文件删掉)。
使用g++编译文件时,对于比当前机器时间还靠前的文件会给出一条提示“main.cpp has modification time 92166 s in the future”,即这个文件在将来某个时间修改了,因此需要把这个文件的修改时间改回来。
若是用svn管理的代码,碰上这种情况,最简单的方法就是全部删除,重新checkout。当然记得把自己修改尚未提交的代码备份一下。