C:指向整数转换的指针不兼容

时间:2016-09-15 19:22:45

标签: c datetime time integer

我有一个包含日期和时间的结构。

struct datetime{
int hour;
etc...}

当我尝试将正确的小时分配给我自己的struct-hour时,我收到错误。

struct tm tm_struct = *localtime(time(NULL));

dt->hour = tm_struct->tm_hour;

首先,我在第一行收到不兼容的指针转换错误,然后收到有关使用tm_struct.tm_hour而不是->的错误。

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

localtime期望指针time_t作为其参数。相反,您传递time_t值本身,这是您第一个问题的根源。通常因此,您必须引入一个名为time_t的中间对象来保存time的结果

time_t t = time(NULL);
struct tm tm_struct = *localtime(&t);

阻止您使用原始单行。

但是通过使用复合文字,您仍然可以将其表达为单行

struct tm tm_struct = *localtime(&(time_t) { time(NULL) });

如果你愿意的话。