所以我在Gamasutra上阅读了John Carmack的采访,其中他谈到了他所谓的"生活在内存映射文件中的实时C++对象".以下是一些引用:
JC:是的.我实际上从中获得了多项好处...最后一个iOS Rage项目,我们附带了一些新技术,这些技术使用一些聪明的东西来制作生活在内存映射文件中的实时C++对象,由闪存文件系统支持在这里,我想要构建我们未来在PC上的所有工作.
...
我在这里向自己发出命令,我希望在我们的PC平台上加载两秒钟的游戏,所以我们可以更快地迭代.而现在,即使固态硬盘,你所有你在加载时间做的事情为主,所以需要这种不同学科可以说"一切都将被毁灭和相对地址使用"所以你只要说,"映射文件,我的所有资源都在那里,它在15毫秒内完成."
(完整的采访可以在这里找到)
有没有人知道Carmack在谈论什么以及你将如何设置这样的东西?我在网上搜索了一下,但我似乎无法找到任何相关信息.
我有自己的日志记录功能。我想使用libfmt格式化日志参数,例如:
log_error("Error on read: {}", errMsg);
Run Code Online (Sandbox Code Playgroud)
但是,编译时间格式字符串检查似乎仅在我直接调用print / format函数时才起作用,而不是在日志函数中调用时:
#include <fmt/format.h>
template<typename ...Args>
void log_error(fmt::string_view format, const Args& ...args) {
// Log function stripped down to the essentials for this example
fmt::print(format, args...);
}
int main()
{
// No errors on this line
log_error(FMT_STRING("Format with too few and wrong type arguments {:d}"), "one", 2.0);
// Compile errors on the next line
// fmt::print(FMT_STRING("Format with too few and wrong type arguments {:d}"), "one", 2.0);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码和错误(如果第二行未注释)可以在Godbolt上看到
有什么方法可以使此编译时格式检查在我自己的日志功能中起作用?