gpt4 book ai didi

c++ - 在运行时更改变量而不使用 C/C++ 中的 Hook ?

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:06 24 4
gpt4 key购买 nike

我希望能够在 C/C++ 中执行以下操作(如果可能的话)。

我有这样一个文件:

Initialvariables.txt
a = 5
b = 2
c = 8

代码如下:

int main(int argc char *argv[])<br/>
{<br/>
int a;<br/>
int b;<br/>
int c;<br/><br/>
LoadInitialVariables("Initialvariables.txt");<br/>
}



其中 a、b、c 是变量,文件“Initialvariables.txt”包含可以在编译后更改的初始值。

是否可以创建 LoadInitialVariables,如果 a新人来更改代码,他们可以简单地添加一个新的 int 并向“initialvariables.txt”添加一个新行,代码将完成剩下的设置初始变量?

目标不是硬编码钩子(Hook),而是使 LoadInitialVariables 尽可能通用。

对我来说,困难似乎来自编译器去除符号的事实,因此如果没有适当的钩子(Hook),可执行文件将不知道 a、b、c 等是什么。如果可能的话,我宁愿不必指定 Hook (除非它只是装饰 int)。

最佳答案

你可以有 LoadInitialVariables()将文本文件加载到 std::map<std::string, int> , 那么你可以引用 int需要时按名称值,例如:

void LoadInitialVariables(const std::string &fileName, std::map<std::string, int> &variables)
{
variables.clear();

char name[256];
int value;

for (each line in the file)
{
std::string line = ...;
if (sscanf(line.c_str(), "%s = %d", name, &value) == 2)
variables[name] = value;
}
...
}

int main(int argc char *argv[])
{
std::map<std::string, int> variables;
LoadInitialVariables("Initialvariables.txt", variables);

int a = variables["a"];
int b = variables["b"];
int c = variables["c"];
...
}

关于c++ - 在运行时更改变量而不使用 C/C++ 中的 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10290603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com