在 iostream 或 C++ 中的其他地方有什么叫做时间的东西吗?

Is there anything called time in iostream or somewhere else in C++?

提问人:Zhang Kai 提问时间:10/6/2017 最后编辑:gsamarasZhang Kai 更新时间:10/6/2017 访问量:536

问:

这些代码编译没有错误,但无处声明。time

幸运的是,当我将名称更改为 mtime 时,错误已经消失了。但错误的本质是什么?什么?time

该程序的输出是 。我想知道文件中或某处是否调用了任何内容。1timeiostream

#include <iostream>
int main()
{
    std::cout << time << std::endl;
    return 0;
}
C++ 时间 IOSTREAM C++-标准库

评论

2赞 Some programmer dude 10/6/2017
可能是 std::time 函数,或者更确切地说是它的 C 等效时间。指向函数的指针将被视为始终为 true 的布尔值,并且无需操作器或设置标志,将打印为 。truestd::cout1
0赞 Jabberwocky 10/6/2017
你的平台是什么,你的编译器是什么?

答:

6赞 Ron 10/6/2017 #1

它是函数的地址,因为您的实现包含标头。该地址永远不会为 NULL,并且可隐式转换为布尔值,因此 的结果为 。您可能在 Linux 上使用 g++。time_t time(time_t*)<iostream>time.h1

2赞 Matteo Italia 10/6/2017 #2

我的怀疑是它是函数,其最佳匹配项是采用 a 的函数(函数指针只是远离 a 的隐式转换)。现在,假设它是一个指向实际有效函数的函数指针,它被转换为 ,然后将其打印为 (如果未设置标志,则默认为将布尔值打印为 0/1)。time_t time(time*)operator<<boolbooltrue1boolalpha

0赞 gsamaras 10/6/2017 #3

std::time,但情况不应该如此,因为不是使用的命名空间。std

所以,它必须是这个功能

time_t时间(time_t* 计时器);

它必须由标头隐式包含。iostream

0赞 dewaffled 10/6/2017 #4

C++ 标准库函数在命名空间中定义。例如,需要标头来提供功能。但实际上,此功能由底层 C 库提供,其中没有命名空间的概念。因此,C++ 标准库标头也允许在全局命名空间中定义某些函数。std<ctime>std::time

引用 cpppreference 中 C 兼容性标头部分:

包括 definitely 提供,也可能提供 ::malloc。包括肯定提供,也可能提供。<cstdlib>std::malloc<stdlib.h>::mallocstd::malloc

因此,例如,在包含标准库标头后,函数可能恰好在全局命名空间中定义。这是标准允许的,但特定于实现。time

0赞 Zhang Kai 10/6/2017 #5

我发现一个问题:为什么 iostream 包含 time.h? 验证上面的答案并解释函数出现的原因。 这真的是功能:)的工作time_t time(time_t * timer)