ptrdiff_t在C中定义在哪里?

Mat*_*ner 53 c types libc stdint

哪里是ptrdiff_t在C中规定?如果不重要,我怎样才能在Linux上从GCC看到这种类型?

GMa*_*ckG 65

它的定义是stddef.h.


该标头定义了整数类型size_t,ptrdiff_t以及wchar_t功能宏offsetof和常量宏NULL.

  • 真正的`stddef.h`隐藏在`/ usr/lib/gcc/TARGET/VERSION/include`以及许多属于GCC的其他头文件中(可能是特定于GCC版本的)而不是C库.`linux/stddef.h`仅用于内核代码(我老实说,我不明白为什么他们打扰自己的副本).您可能会发现`-H`切换到gcc对于调查此类问题很有用. (15认同)
  • 而且,其中只有 `ptrdiff_t` 和 `offsetof` 没有在任何其他地方定义;其他三个也是由许多其他标题定义的。 (2认同)
  • @GoodPerson 这不是一个基于 GNU-libc 的操作系统。许多其他 C 库确实提供了自己的“stddef.h”,但 glibc 将其留给编译器。无论如何,如果您有 GCC,请观察 `echo '#include <stddef.h>' | 的内容。gcc -E -H -xc - > /dev/null` 打印。 (2认同)