编译器在使用strptime函数时会收到警告(C)

art*_*rxe 8 c strptime compiler-warnings

键入man strptime它,这个函数需要声明_XOPEN_SOURCE并包含time.h头.我做的.但是,当我尝试编译我的代码时,我得到:

./check.c:56:警告:隐式声明函数'strptime'

看看我的代码:

int lockExpired(const char *date, const char *format, time_t current) {
        struct tm *tmp = malloc(sizeof(struct tm *));
        time_t lt;
        int et;

        strptime(date, format, tmp);
        lt = mktime(tmp);
        et = difftime(current, lt);

        if (et < 3600)
                return -et;

        return 1;
}
Run Code Online (Sandbox Code Playgroud)

函数声明也是:

char *strptime(const char *s, const char *format, struct tm *tm);

谁能告诉我我的问题来自哪里?

Joe*_*Joe 20

我发现我需要定义__USE_XOPEN_GNU_SOURCE让它变得快乐.

  • 就是这样,谢谢!在我的Linux机器上`man strptime`是错误的,这很奇怪。它会写“ _XOPEN_SOURCE”,它对我不起作用。话虽如此,但我不确定`_GNU_SOURCE`。`__USE_XOPEN`似乎对我自己起作用。 (2认同)
  • 确保在使用 `#include &lt;time.h&gt;` 之前使用 `#define __USE_XOPEN` (2认同)