【发布时间】:2014-01-15 17:52:19
【问题描述】:
我正在为 Pebble 平台开发一个项目。应用程序是用 C 编写的,我的问题并不特定于该平台。
Pebble API 有一个名为PblTm 的结构,每秒由一行代码填充。我的目标是将结构与当前时间进行比较。我创建了 PblTm 结构并用我需要比较的时间填充它们。我只关心结构的小时和分钟部分。到目前为止,我有以下代码。
bool comp_time(int h1, int m1, int h2, int m2, int h3, int m3) {
if((h1<=h2) && (h2<=h3)) //Is start hour <= now hour <= end hour?
{
if((h1=h2) && (m2>=m1)) //If start hour = now hour, is now min >= start min ?
{
return true;
}
if((h2=h3) && (m2<=m3)) //If end hour = now hour, if now min <= end min?
{
return true;
}
if((h1>h2) && (h2<h3)) //If start hour < now hour < end hour?
{
return true;
}
}
else
{
return false;
}
return false;
}
我最初尝试将结构本身作为参数提供给函数,例如:
comp_time(&first_start,&now,&first_end);
然后在函数内部引用结构的元素,我永远无法编译它,也找不到关于它的信息。 (我可能一直没有搜索正确的术语)。
然后我改为将 int 参数提供给函数本身,如下所示:
comp_time(first_start.tm_hour,first_start.tm_min,now.tm_hour,now.tm_min,first_end.tm_hour,first_end.tm_min)
这是一种相当笨拙的方式,但我已经完成了将其全部输入的工作。然而,我的主要问题是比较功能不起作用。对于不适合的值,它返回(显然是随机的,我无法找到模式)true,对于一些适合的值,它返回 false。
你有什么想法吗?
【问题讨论】:
-
您的比较不起作用,因为您使用单等号
=而不是双等号==来检查是否相等。需要一个实际的答案来解释为什么您的函数调用不起作用。 -
@Xymotech 谢谢!我不知道我怎么没听懂。
标签: c struct comparison pebble-watch