什么时候getdate和strptime不包含在time.h中?

时间:2015-09-01 12:09:24

标签: c clang llvm llvm-clang

所以函数getdate_r对我来说似乎没有定义;编译以下内容在gcc或clang中都不起作用(手册页程序也不起作用)

#include <time.h>

int main() {
    char timeString[] = "2015/01/01 10:30:50";
    struct tm res = {0};
    int err = getdate_r(timeString, &res);
    return err;
}

clang报告以下内容

test.c:6:12: warning: implicit declaration of function 'getdate_r' is invalid
      in C99 [-Wimplicit-function-declaration]
        int err = getdate_r(timeString, &res);
                  ^
1 warning generated.

来自time.h的其他功能,例如getdatestrptime也不会以类似的方式工作。

任何人都有关于最新情况的解释?

clang版本信息

Ubuntu clang version 3.6.0-2ubuntu1 (tags/RELEASE_360/final) (based on LLVM 3.6.0)
Target: x86_64-pc-linux-gnu
Thread model: posix

1 个答案:

答案 0 :(得分:1)

要使getdate_r可用,您需要:

#define _GNU_SOURCE 1
在之前

包括任何包含文件。这样做将为各种GNU扩展提供声明,包括getdate_r

#define _GNU_SOURCE 1
#include <time.h>

int main(void) {
    char timeString[] = "2015/01/01 10:30:50";
    struct tm res = {0};
    int err = getdate_r(timeString, &res);
    return err;
}