首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不好的编码习惯

不好的编码习惯
EN

Stack Overflow用户
提问于 2020-05-19 02:45:28
回答 1查看 22关注 0票数 0

嘿,我现在正在试着模仿一个旧的游戏机。我遇到了一个小问题,我不知道该怎么解决。

更具体地说,我正在为GBA做一个模拟器。但为了让它更具挑战性,我决定将游戏模拟为具有内存的外部设备,可能还有额外的CPU等等。就像他们在现实世界中一样。要做到这一点,我需要创建一个自包含的可执行文件,其中分配了一些固定大小的备用内存来保存数据,如保存的游戏。

这个是可能的吗?我知道这是不常见的坏习惯。我不关心,就像人们说不要在C中使用GOTO一样,指令是要用的,我用它的效果很好,没有头疼,也没有奇怪的行为,它只需要片刻的计划,也许还需要一门编译器实现的课程来了解如何使用它。

语言并不重要,C语言也可以,但如果.net支持它,我会更喜欢它。

EN

回答 1

Stack Overflow用户

发布于 2020-05-19 03:03:01

您可以采用一些自解压归档所使用的方法。在编译的可执行文件后追加标记GUID和数据块

(可执行文件)+(标记GUID) +(数据区)

例如,在Windows中,使用命令框:

代码语言:javascript
复制
type "c:\vsprojects\my-gba\release\my-gba.exe" "c:\data-files\guid.txt" "c:\data-files\save-data-area.txt" > "c:\data-files\gba-combo.exe"

在Linux中,您需要将这3个部分合并到一个新文件中,以形成包含数据的可执行文件。

要查找数据区的起始位置,请在EXE中搜索GUID,然后查找它。

GUID在您的代码中自然出现的可能性非常小,但GUID越长,这种可能性就越低。例如,您可以使用联机GUID生成器并在GUID文本文件中组合多个字符串

代码语言:javascript
复制
731056dd-1dd7-4f46-b90b-2ad623198404 a2d0cd76-f8fc-4bcf-8a15-80ca4d9b205f

您确实需要确保您的代码编写方式不会将GUID作为字符串常量嵌入到代码前面的附加标记之前。

不好:

代码语言:javascript
复制
const char* foo = "731056dd-1dd7-4f46-b90b-2ad623198404 a2d0cd76-f8fc-4bcf-8a15-80ca4d9b205f"
-- code that seeks for foo ---

好的:

代码语言:javascript
复制
const char* arr[] = { "731056dd-1dd7-4f46-b90b-2ad623198404", "BREAK-MATCH", "a2d0cd76-f8fc-4bcf-8a15-80ca4d9b205f" };
-- code sets foo from arr [0], " ", [2] then seeks for foo ---
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61876770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档