size_t
当我在 Eclipse 中打开声明时,我stddef.h
从 GCC 中获得以下信息:
typedef __SIZE_TYPE__ size_t;
我知道这__SIZE_TYPE__
没有在任何头文件中定义,但编译器知道。
但是,Eclipse CDT 如何理解它__SIZE_TYPE__
并且size_t
是整数类型,所以它可以进行代码分析等?它内置在 CDT 中吗?
size_t
当我在 Eclipse 中打开声明时,我stddef.h
从 GCC 中获得以下信息:
typedef __SIZE_TYPE__ size_t;
我知道这__SIZE_TYPE__
没有在任何头文件中定义,但编译器知道。
但是,Eclipse CDT 如何理解它__SIZE_TYPE__
并且size_t
是整数类型,所以它可以进行代码分析等?它内置在 CDT 中吗?
我终于弄明白了。
__SIZE_TYPE__
可以在 Project Properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> Entries -> CDT GCC Built in Compiler Settings 中找到,它说__SIZE_TYPE__ = unsigned int.
查看 Providers 选项卡,CDT 通过运行从 GCC 中提取列表${COMMAND} -E -P -v -dD ${INPUTS}
,其中${COMMAND}
gcc${INPUTS}
是一个空的 C 或 C++ 文件。
-E
仅预处理-P
没有线标记-v
详细-dD
转储所有宏定义。
GCC 输出各种内部定义,包括#define __SIZE_TYPE__ unsigned int
Eclipse 不明白__SIZE_TYPE__
——那是 GCC 的事情。例如:
http://gcc.gnu.org/onlinedocs/gccint/Type-Layout.html
http://gcc.gnu.org/onlinedocs/gcc-3.1/gccint/Driver.html
这里有一个更完整的解释: