输入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;
}
函数声明也是:char *strptime(const char *s, const char *format, struct tm *tm);
谁能告诉我,我的问题从何而来?
2条答案
按热度按时间r7s23pms1#
我发现我需要定义
__USE_XOPEN
和_GNU_SOURCE
才能让它高兴。anauzrmj2#
Debian提供的手册页说:
不应该忽略注解。实际上,通过运行
man 7 feature_test_macros
,您将了解到:为了有效,必须在包含任何头文件 * 之前定义功能测试宏 *。
所以只要把
#define
这一行移到源文件的最顶部,它就可以正常工作了。