小编Mar*_*art的帖子

"生活在内存映射文件中的实时C++对象"?

所以我在Gamasutra上阅读了John Carmack的采访,其中他谈到了他所谓的"生活在内存映射文件中的实时C++对象".以下是一些引用:

JC:是的.我实际上从中获得了多项好处...最后一个iOS Rage项目,我们附带了一些新技术,这些技术使用一些聪明的东西来制作生活在内存映射文件中的实时C++对象,由闪存文件系统支持在这里,我想要构建我们未来在PC上的所有工作.

...

我在这里向自己发出命令,我希望在我们的PC平台上加载两秒钟的游戏,所以我们可以更快地迭代.而现在,即使固态硬盘,你所有你在加载时间做的事情为主,所以需要这种不同学科可以说"一切都将被毁灭和相对地址使用"所以你只要说,"映射文件,我的所有资源都在那里,它在15毫秒内完成."

(完整的采访可以在这里找到)

有没有人知道Carmack在谈论什么以及你将如何设置这样的东西?我在网上搜索了一下,但我似乎无法找到任何相关信息.

c++ memory-mapped-files memory-mapping

14
推荐指数
1
解决办法
3156
查看次数

自定义{fmt}格式化功能,可进行编译时格式字符串检查

我有自己的日志记录功能。我想使用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看到

有什么方法可以使此编译时格式检查在我自己的日志功能中起作用?

c++ fmt

6
推荐指数
1
解决办法
87
查看次数

标签 统计

c++ ×2

fmt ×1

memory-mapped-files ×1

memory-mapping ×1