15 c++
现在我正在讨论程序员使用typedef关键字的新类型定义.只要我的学生习惯使用size_t类型(例如使用funciton length()),我必须要求他们稍微努力才能"相信"它是一个整数类型,我认为它会很棒显示noew定义此类型的位置.
所以,我在/ usr/include中已经在ubuntu框中做了很多grep,而我看到的是size_t反过来又是对size_type的重新定义,而这又是对metadata_type的重新定义,这就是目录.找不到最终的"typedef unsigned int metadata_type;".
在/ usr/src我找到了anohter以前的类型叫yy_size_t,...
但是,无论如何我都无法走到链的尽头.
有谁知道在哪里找出最终的定义来检查它是无符号的int(或类似的)?可能我想念我的盒子里的开发包吗?在这种情况下,为什么我能够使用size_t类型编译程序?
Ste*_*sky 23
您可以尝试使用C预处理器(cpp)手动扩展标准包含文件,并检查其输出:
$ echo '#include <stdlib.h>' | cpp -I/usr/include - > stdlib-expanded.c
Run Code Online (Sandbox Code Playgroud)
您会发现cpp甚至包括标记的输出,以指示stdlib-expanded.c包含代码的文件.
gcc提供了一些标题,这里是相关的:size_t定义在stddef.h哪个标题中.这是例如/usr/lib/x86_64-redhat-linux/4.1.1/include/stddef.h.有的定义size_t是
typedef __SIZE_TYPE__ size_t;
Run Code Online (Sandbox Code Playgroud)
__SIZE_TYPE__ 是一个编译器预定义的宏(它允许确保编译器和头一致,并且,正如编译器所期望的那样依赖于它的参数 - 例如,使用-m32,它是无符号的32位,并且-m64是无符号的64位)位类型 - ,使标头独立于编译器参数).