【问题标题】:Warning and runtime error during time handling时间处理期间的警告和运行时错误
【发布时间】:2012-11-08 19:32:49
【问题描述】:

以下代码应该可以工作(这是 stackoveflow 中公认的答案),但不知何故我收到了两个警告,因此我收到了分段错误。怎么了?

time_t timer;
char buffer[25];
struct tm* tm_info;

time(&timer);
tm_info = localtime(&timer);

strftime(buffer, 25, "%Y:%m:%d%H:%M:%S", tm_info);

bead.c:61: 警告:赋值使指针从整数而不进行强制转换 bead.c:63: 警告:内置函数 âstrftimeâ

的隐式声明不兼容
line 61 is tm_info = localtime(&timer);
and line 63 is strftime(buffer, 25, "%Y:%m:%d%H:%M:%S", tm_info);

【问题讨论】:

标签: c segmentation-fault


【解决方案1】:

所以...编译器认为localtime返回一个整数而strftime不存在?

您确定要包含<time.h>

【讨论】:

  • 多么业余的错误!谢谢
  • 在我的例子中,我包含了 sys/time.h 而不是 time.h...获取该警告和一个段错误...
【解决方案2】:

我已经在“gcc 版本 4.4.3 (Ubuntu 4.4.3-4ubuntu5)”中对其进行了测试,一切正常!

谢谢!

【讨论】:

    【解决方案3】:

    如果我不包括 time.h,则此代码会出现段错误,如果我这样做则不会出现段错误。

    没有 time.h,你的编译器不知道函数的签名,并假设它是一个返回 int 的函数(如果我的记忆很好的话)。

    长话短说,包括 time.h

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多