比Where do I find the definition of size_t?的答案还多的问题。
#include <iostream> //comment this size_t still works, but std::size_t doesn't work
#include <stdlib.h> //comment this size_t still works
int main(int argc, char* argv[])
{
size_t t;
std::size_t t;
return 0;
}
在Visual Studio 2019中:
size_t的定义似乎在vcruntime.h中
(1)即使不包含 header ,size_t仍然有效,为什么?生成系统可以自动包含诸如vcruntime.h之类的 header ,还是可以通过诸如内置类型之类的其他机制来实现?
(2)std::size_t仅在包含iostream且F12也跳到vcruntime.h中的定义时才能使用。但是搜索整个MS VC运行时
来源(例如... \ VC \ Tools \ MSVC \ 14.23.28105),似乎没有这样的定义,那么这是怎么发生的呢?
现在,我发现上述情况也发生在Windows上的Clang 9上。
最佳答案
在您的示例中,从cstdlib找到size_t。
由于定义了c++ 17 size_t:
in header <cstddef>
in header <cstdio>
in header <cstdlib>
in header <cstring>
in header <ctime>
in header <cuchar>
它可能在没有vs或其他编译器的标题的情况下工作。有时可以通过其他基本头文件(如I / O或什至使用std)找到它。但是包含 header 是安全/更好的。
关于c++ - 为什么 `size_t`在Windows 2019的VS 2019和Clang 9中没有标题的情况下可以工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60369492/