C++中__TIME__显示时间早于ctime(&time(NULL))结果的原因是什么?
现象原因解析
__TIME__是C++标准预定义的预处理宏,仅在编译阶段生效:预处理过程中编译器会直接把这个宏替换为当前源文件编译时的时间字符串,这个值会硬编码进最终生成的可执行文件中,程序运行时不会发生任何变化,和运行时机完全无关。time(NULL)搭配ctime(&t)属于运行时逻辑:程序启动后执行到对应代码行时,才会调用系统接口获取操作系统当前的实时时间并格式化输出,这个时间对应的是你实际运行程序的时间。
你观察到的2-3秒时间差,本质是「编译完成生成可执行文件」到「执行该可执行文件」之间的间隔时长,和代码里的打印顺序没有任何关联。如果你编译完成后间隔更久再运行程序,这个时间差也会对应变大。
内容的提问来源于stack exchange,提问作者onigari
相关产品推荐
相关产品推荐

