c++ - 动态使用预处理器 DATE
问题描述
我正在尝试__DATE__
在 C++Builder 中使用,我需要动态使用它。例如,如果用户单击一个按钮,包含的标签__DATE__
将在系统日期之后更新。
我现在这样做了:
label1->Text = "Data: " __DATE__;
这是一个设置日期的函数,称为DateTime()
. 对于按钮,我已经做了点击事件,但我需要DateTime()
动态运行。
解决方案
该__DATE__
符号是一个预处理器宏,因此它只在编译时定义。
这意味着 的实际值__DATE__
在程序执行期间不会改变。这将是您的编译时间。永远与您刚刚编译的可执行文件中的值相同。
如果您需要反映当前系统时钟/日期的日期字符串,那么您将需要使用一些查询系统当前的函数,如time()
. 绝对不是编译时预处理器宏字符串作为__DATE__
. 请参阅其他ctime函数以帮助您格式化所需的字符串。
最后,关于构建字符串:您将需要像在运行时一样编写字符串sprintf
。您的构造"Data: " __DATE__
是有效的,因为您再次将字符串连接为编译时间(它是编译器预处理器进行连接,而不是您的程序)。在这里,您可以了解 C 预处理器的此功能。此外,这里描述了这是一个 C99 标准行为,但无法判断它是否未在早期的 C 标准中定义。
推荐阅读
- html - 我可以让按钮中的文本使用换行符吗
- r - 在字符串中定位字符
- linux - 在关闭命令中被杀死的第一个进程
- javascript - 如何仅在特定页面或页面上运行 javascript 函数?
- javascript - 使用 jquery 下载图像上的文本
- java - 在 Firebase Android 中制作 ListView
- java - 无法在 Eclipse 中使用 localhost 将文件上传到亚马逊 S3 存储桶
- php - Laravel 5.4 和 office365 公司邮箱
- excel - 导出为 xlsx 的 Google 脚本不起作用
- actions-on-google - 有没有办法播放视频作为回应?