怎么做加密货币网站,外贸SOHO建公司网站,济南软件外包,wordpress ftp目录 软件环境问题描述查阅资料解决问题参考文献 软件环境
Visual Studio 2022, Visual C, Version 17.5.4
问题描述
在应用 https://github.com/ToniLipponen/cpp-sqlite 的过程中#xff0c;发现源代码文件 sqlite.hpp 中#xff0c;有一处宏#xff0c;和本项目的 C L… 目录 软件环境问题描述查阅资料解决问题参考文献 软件环境
Visual Studio 2022, Visual C, Version 17.5.4
问题描述
在应用 https://github.com/ToniLipponen/cpp-sqlite 的过程中发现源代码文件 sqlite.hpp 中有一处宏和本项目的 C Language Standard 有关如下图所示 将鼠标悬停在 __cplusplus 这个宏上可以看到它的值展开为199711L。现在我们更改本项目的 C Language Standard从默认值 Default (ISO C14 Standard) 更改为 ISO C17 Standard (/std:c17)如下图所示 然而__cplusplus 宏的值依然是 199711L。无论将 C Language Standard 改为任何值__cplusplus 宏的值都被展开为 199711L始终没有改变。这是为什么呢如何纠正这个问题呢
查阅资料解决问题
通过检索发现微软官方文档中说明了这个问题/Zc:__cplusplus (Enable updated __cplusplus macro)
这篇文章里面简单来说讲的就是这个意思自从 Visual Studio 2017 Version 15.7 以来Visual C 中增加了一个编译选项/Zc:__cplusplus这个编译选项默认是关闭的只有打开了这个编译选项__cplusplus 这个宏才能被正确地更新为 C Language Standard 对应的值。
进行以下 2 步操作
本项目的 C Language Standard从默认值 Default (ISO C14 Standard) 更改为 ISO C17 Standard (/std:c17)。如下图所示在项目属性的 C/C | Command Line 中增加/Zc:__cplusplus 然后再看看代码编辑器中源代码文件 sqlite.hpp 的 __cplusplus 宏 将鼠标悬停在 __cplusplus 宏上面可以看到它已经展开为 201703L 这个值。与我们的预期相符。
微软的官方文档中是这样解释当 /Zc:__cplusplus 编译开关打开或者关闭时 __cplusplus 宏的取值情况的
参考文献
/Zc:__cplusplus (Enable updated __cplusplus macro)How are the __cplusplus directive defined in various compilers?