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
这里有一个更完整的解释: