首页 > 解决方案 > 动态使用预处理器 DATE

问题描述

我正在尝试__DATE__在 C++Builder 中使用,我需要动态使用它。例如,如果用户单击一个按钮,包含的标签__DATE__将在系统日期之后更新。

我现在这样做了:

label1->Text = "Data: " __DATE__;

这是一个设置日期的函数,称为DateTime(). 对于按钮,我已经做了点击事件,但我需要DateTime()动态运行。

标签: c++c++builderrad-studio

解决方案


__DATE__符号是一个预处理器宏,因此它只在编译时定义。

这意味着 的实际值__DATE__在程序执行期间不会改变。这将是您的编译时间。永远与您刚刚编译的可执行文件中的值相同。

如果您需要反映当前系统时钟/日期的日期字符串,那么您将需要使用一些查询系统当前的函数,如time(). 绝对不是编译时预处理器宏字符串作为__DATE__. 请参阅其他ctime函数以帮助您格式化所需的字符串。

最后,关于构建字符串:您将需要像在运行时一样编写字符串sprintf。您的构造"Data: " __DATE__是有效的,因为您再次将字符串连接为编译时间(它是编译器预处理器进行连接,而不是您的程序)。在这里,您可以了解 C 预处理器的此功能。此外,这里描述了这是一个 C99 标准行为,但无法判断它是否未在早期的 C 标准中定义。


推荐阅读