如何检查上次退货是否为当前退货
How to check if previous return is the current one?
我有以下代码:
编辑
....int l=0
char* FantasiaGameUtils::GetCurrentTask(char *chat_arg)
{ // I know the code looks disgusting but please ignore that as I am only testing now
static char *szTemp1="";
for(int i=0; i<loop; i++)
{
if(task[i][0]!=0)
{
sif (l==0)
{strcpy(chat_arg, task[i]);
}
else
{strcpy(chat_arg, task[i+1]);
}
strcpy(task[i], "");
if (szTemp1!="")
{
MessageBox(0, szTemp1, "szTemp Value", 0);
MessageBox(0, chat_arg, "Initial Value", 0);
return chat_arg != szTemp1 ? chat_arg : NULL;
} else {
l++;
szTemp1 = chat_arg;
MessageBox(0, szTemp1, "szTemp1 Value", 0); // @execute
return chat_arg;
}
}
strcpy(chat_arg, "");
}
return false;
}
编辑
我试图做的是让返回序列检查以前的返回值,如果它与当前值不相同,则返回当前值chat_arg
,如果是,则返回NULL。
此函数的目的是从global_chat获取用户提示。提示的一个例子是!create <game-type> <game-time> <max-players>
该提示将分别由每个单词enter(在每个空格后)存储到task[][]数组中。
从那时起,这个功能就发挥了作用。它应该将当前任务值(当前单词)复制到chat_arg变量中。
出于某种原因,我遇到的问题是我主游戏循环中的每一个。chat_arg的值在整个游戏循环中保持不变。我想清除这个值。我已经想出了这个方法,我将检查函数中的当前值是否与前一个值相同,如果是,则返回NULL(清除值),如果不是,则没有理由清除前一个,因此返回当前值。
有人能为我做这项检查提供更好或改进的方法吗?或者有人能告诉我如何从内存中获取以前的返回值,并将其与当前值进行比较吗?谢谢!
1)将C++
标记添加到您的帖子中,因为它不是纯C
代码。
for(int i=0; i < loop; i++) // This line will not compile using C compilers.
2) 最好在下面的行中返回0
。false
与您期望的char*
不匹配。
return false; -> return 0;
我的解决方案:
1) 创建全局变量并将本地chat_arg
与之进行比较。
extern char* g_prev_chat_arg = 0;
...
char* FantasiaGameUtils::GetCurrentTask(char *chat_arg)
{
...
//return chat_arg != /*previous return value*/ ? chat_arg : NULL;
if (0 == strcmp(chat_arg, g_prev_chat_arg))
{
return 0;
}
else
{
g_prev_chat_arg = chat_arg;
return chat_arg;
}
...
}
2) 在函数char* FantasiaGameUtils::GetCurrentTask(char *chat_arg)
中创建本地static
变量,并像上面一样使用它,
3) 将上次从char* FantasiaGameUtils::GetCurrentTask(char *chat_arg)
返回的值存储在代码中的某个位置,然后在每次调用GetCurrentTask(...)
时传递它
char* FantasiaGameUtils::GetCurrentTask(const char* prev_chat_arg, char* chat_arg)
- 是否可以检查悬挂光纤的调用堆栈?
- 从双精度转换为整数的显式类型是否始终检查整数溢出?
- 是否可以检查变量是否位于 L1/L2/L3 缓存中
- 是否可以检查给定exception_ptr实例是否拥有某种类型的异常?
- 要检查 SetFilePointerEx、ReadFile 或 WriteFile 是否成功,我是否需要检查 lpNew
- 是否可以检查存储在堆栈上的单词是否是回文,而C++中没有任何附加数据结构
- 在尝试擦除元素之前,我们是否需要检查unordered_set是否包含元素
- std::迭代器是否可以检查该迭代器上是否存在下一个元素?(此设计受到家庭作业的限制)
- 标准库是否提供检查双精度值是否与整数相同的函数
- 我是否必须检查此方法的指针有效性
- 是否可以检查接口是否在 pcap 中激活
- 是否可以检查是否为类定义了成员函数,即使该成员继承自未知基类
- 是否可以检查串口是空闲还是占用
- wxwidgets中是否有检查pdf软件可用的功能
- try_lock()+unlock()是否是检查boost::interprocess::file_lock是否已锁定的
- 是否可以检查是否为给定类型和参数定义了用户字面值
- 是否可以检查以字符串作为其名称的函数是否存在?(c++)
- 是否支持检查mmap
- 是否可以检查函数是否具有 void 返回类型
- 是否可以检查变量的存在性