我在我的程序中发现了一个奇怪的东西。以下是两个例子
#include <stdio.h>
int main() {
time_t t1, t2;
t1 = 1735689614;
t2 = 1735689600;
printf("difftime =%d \n", difftime(t1, t2)); // difftime() return int
}
#include <stdio.h>
#include <time.h>
int main() {
time_t t1, t2;
t1 = 1735689614.0;
t2 = 1735689600.0;
printf("difftime =%f \n", difftime(t1, t2)); // difftime() return double
}
你可能会注意到#include<time.h>
,返回值difftime()
两个例子的difftime()
是不同的函数。
我知道double difftime()
是 的标准函数time.h (C11)
。但是 是从哪里来的呢int difftime()
?
这是在 vs2022 中用 c 编程时的一个非常奇怪和微妙的问题。我在 vs2022 中将 c 标准更改为C11
。程序编译成功。我以为它会使用double difftime()
不带的#inlcude<time.h>
。
虽然在使用时可以清楚地看到这个问题gcc
implicit declaration of function 'difftime' [-Wimplicit-function-declaration]