C++ 在编译时获取月份作为数字

2023-11-29

我有一个 C++ 项目,必须打印修订字符串。修订字符串是公司指定的,协议包括构建时间(yyyy/mm/dd)。

我过去常常将其指定为构建系统中的宏,但这不再是一个选项,因为会弄乱预编译头(在增量构建中,当日期发生变化时)。

我试图通过从编译器获取构建日期来实现这一点,但是__DATE__ and __TIMESTAMP__以 Mmm 形式给出月份。

有什么想法如何将月份作为数字吗?


根据下面的答案,我完成的版本是:

#define __MONTH__ (\
  __DATE__ [2] == 'n' ? (__DATE__ [1] == 'a' ? "01" : "06") \
: __DATE__ [2] == 'b' ? "02" \
: __DATE__ [2] == 'r' ? (__DATE__ [0] == 'M' ? "03" : "04") \
: __DATE__ [2] == 'y' ? "05" \
: __DATE__ [2] == 'l' ? "07" \
: __DATE__ [2] == 'g' ? "08" \
: __DATE__ [2] == 'p' ? "09" \
: __DATE__ [2] == 't' ? "10" \
: __DATE__ [2] == 'v' ? "11" \
: "12")

...

std::string udate = __DATE__;
std::string date = udate.substr(7, 4) + "/" + __MONTH__ + "/" + udate.substr(4, 2);
boost::replace_all(date, " ", "0");

thanks


我认为下面的宏符合您的要求。这里我们正在处理月份的第三个字母,因为它对于大多数月份(一月/六月、三月/四月除外)来说都是唯一的,因此更容易比较。

#define MONTH (\
  __DATE__ [2] == 'n' ? (__DATE__ [1] == 'a' ? 1 : 6) \
: __DATE__ [2] == 'b' ? 2 \
: __DATE__ [2] == 'r' ? (__DATE__ [0] == 'M' ? 3 : 4) \
: __DATE__ [2] == 'y' ? 5 \
: __DATE__ [2] == 'l' ? 7 \
: __DATE__ [2] == 'g' ? 8 \
: __DATE__ [2] == 'p' ? 9 \
: __DATE__ [2] == 't' ? 10 \
: __DATE__ [2] == 'v' ? 11 \
: 12)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 在编译时获取月份作为数字 的相关文章

  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • C++ 中的软(不是:弱)引用 - 这可能吗?有实施吗?

    在 C 中我正在使用boost shared ptr and boost weak ptr自动删除不再需要的对象 我知道这些与引用计数一起工作 在 Java 中 内存由垃圾收集器管理 它将内置对象引用视为strong WeakReferen
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 为什么 FTPWebRequest 或 WebRequest 通常不接受 /../ 路径?

    我正在尝试从 ftp Web 服务器自动执行一些上传 下载任务 当我通过客户端甚至通过 Firefox 连接到服务器时 为了访问我的目录 我必须指定如下路径 ftp ftpserver com AB00000 incoming files
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 在基类集合上调用派生方法

    我有一个名为 A 的抽象类 以及实现 A 的其他类 B C D E 我的派生类持有不同类型的值 我还有一个 A 对象的列表 abstract class A class B class A public int val get privat
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • 无法使用 AngularJS 在 Android 浏览器中执行 POST 请求

    我有一个有角度的应用程序 可以显示记录 并让用户能够添加记录 在桌面或 iOS 设备上一切正常 但在 Android 设备上 POST 方法失败 403 禁止 这是我的服务中的代码 obj getRecords function retur
  • 终止正在 Q​​Thread 内运行的正在进行的 QProcess? [复制]

    这个问题在这里已经有答案了 如何终止正在 Q Thread 内运行并被另一个 QThread 删除的正在进行的 QProcess 我什至插入了一个 QMutex extCmdProcessLock 这应该避免在 extCmdProcess
  • Paper.js 外部文件将无法加载

    我只是想进入 paper js 内联时代码可以正常工作 但是当我将它们移动到外部文件并在那里 src 时 错误开始弹出 任何人都可以弄清楚我做错了什么吗 附有错误屏幕截图 非常感谢 错误截图
  • PHP 在 if 语句中组合布尔运算符(AND、OR)

    我想知道是否可以将两个运算符 OR 和 AND 组合在一个 if 语句中 如下所示 if apple 1 orange 2 cake 0 我想说的是 如果苹果等于 1 橙子等于 2 或者蛋糕等于 0 那么就这样做 换句话说 我需要苹果和橙子
  • Python:如何按每个元素的最大值对列表进行排序?

    L a b c d e f 我想按 max a b max c d max e f 等对其进行排序 您可以提供定制key函子到sort L sort key max
  • 如何获取 postgresql 9.5 中特定模式中存在的所有表的表行数?

    如何获取 postgresql 9 5 中特定模式中存在的所有表的表行数 我希望结果为 table name 行数 如何使用查询来完成此操作 这可以通过一些 XML 魔法来完成 select table schema table name
  • Discord.py:为什么我的加入消息不起作用?

    我很困惑为什么我的加入消息不起作用 我安装了discord py库 我真的很困惑 我下面还有其他代码 但它不应该影响上面的代码 import discord client discord Client client event async
  • ASP.NET Core Identity - 获取当前用户

    为了获取 MVC5 中当前登录的用户 我们所要做的就是 using Microsoft AspNet Identity Authorize public IHttpActionResult DoSomething string curren
  • .htaccess 中的条件 PHP 版本

    在我的本地测试服务器上 我使用 PHP 5 4 然而 在实时主机上 我目前仅限于 PHP 5 3 并且必须在 htaccess 中指定它 否则默认为 5 2 所以我可以添加 Use PHP 5 3 Action application x
  • 写入记录器时发生错误。 (无法打开源“.NET Runtime”的日志。您可能没有写入权限。)

    我在 Net core 3 1 中创建了一个 Web 应用程序 并尝试使用 EF Core 访问数据库 在访问它时 我遇到以下错误 奇怪的是 它之前可以正常工作 但应用程序方面没有任何变化 at Microsoft Extensions L
  • 如何在mysql中对西里尔字母进行编码?

    这是怎么回事 我有一个问题 希望你能帮助我解决 我的一个朋友有一个简单 可靠的 html 网站 我实现了一点 php 文章的 CRUD 系统 我遇到的问题是从 mysql 数据库放置和获取西里尔字符 我接下来想要实现的目标是 在主导航中有一
  • 了解地图功能

    Python 2 文档说 内置功能 map function iterable 将函数应用于可迭代的每个项目并返回一个列表 结果 如果传递额外的可迭代参数 函数必须 接受这么多参数并应用于所有项目 并行迭代 如果一个迭代比另一个短 则假定它
  • 使用functions.php将Bootstrap添加到Wordpress

    我尝试使用以下代码将 Bootstrap 嵌入到 Wordpress 但它不起作用 需要帮忙
  • 设置用双引号括起来的单词的 CSS

    这是我的问题的后续问题如果代码包含保留字 则设置代码的 CSS 我正在尝试做什么 如果某些代码有引号或双引号 我想将字体颜色设置为红色和粗体 前任 System out println Hello world 应该将 Hello world
  • 如何使 PageView.Builder() 滚动动画从滞后变得极其流畅 - Flutter

    我使用 PageView Builder 来构建由基本文本小部件数组提供的小部件 但在调试模式下 动画感觉非常滞后 在发布或分析模式下 动画仍然滞后 但少了很多 有什么方法可以完全消除使用PageView时的动画滞后现象 这是我的代码 im
  • 如何从另一台计算机连接到 SQL Server?

    我想使用 SQL Server 2005 从家里连接到另一台 PC 我查看了 msd 但在连接之前它说我应该连接到另一台计算机 使用计算机管理但没有成功 我只能连接到我的工作组中的计算机 谢谢 路易莎 免责声明这只是一些可能对任何人都有帮助
  • 提取C/C++函数原型

    我想做这个 extract prototypes file1 c file2 cpp file3 c 并让任何脚本 程序打印给定 C C 文件中定义的所有函数的函数原型的良好列表 它必须很好地处理多行声明 有没有一个程序可以完成这项工作 越
  • Python 的 eval() 在不受信任的字符串上的安全性?

    如果我使用 eval 评估 Python 字符串 并且有一个类似以下的类 class Foo object a 3 def bar self x return x a 如果我不信任该字符串 会有哪些安全风险 尤其 Is eval strin
  • 计算不同数字数量的省时方法

    get number 返回一个整数 我将调用它 30 次并计算返回的不同整数的数量 我的计划是将这些数字放入std array
  • C++ 在编译时获取月份作为数字

    我有一个 C 项目 必须打印修订字符串 修订字符串是公司指定的 协议包括构建时间 yyyy mm dd 我过去常常将其指定为构建系统中的宏 但这不再是一个选项 因为会弄乱预编译头 在增量构建中 当日期发生变化时 我试图通过从编译器获取构建日