【问题标题】:How does Eclipse CDT understand __SIZE_TYPE__?Eclipse CDT 如何理解 __SIZE_TYPE__?
【发布时间】:2013-10-16 17:26:00
【问题描述】:

当我在 Eclipse 中打开 size_t 的声明时,我从 GCC 获得了 stddef.h 的行: typedef __SIZE_TYPE__ size_t;

我了解__SIZE_TYPE__ 没有在任何头文件中定义,但编译器知道。

但是,Eclipse CDT 是如何理解__SIZE_TYPE__size_t 是整数类型,所以它可以进行代码分析等呢?它是内置在 CDT 中的吗?

【问题讨论】:

    标签: eclipse-cdt codan


    【解决方案1】:

    我终于明白了。

    __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 通过运行 ${COMMAND} -E -P -v -dD ${INPUTS} 从 GCC 中提取列表,其中 ${COMMAND} 是 gcc,${INPUTS} 是一个空的 C 或 C++ 文件。

    -E 仅预处理 -P 无线标记 -v 详细 -dD 转储所有宏定义。

    GCC 输出各种内部定义,包括#define __SIZE_TYPE__ unsigned int

    【讨论】:

      【解决方案2】:

      Eclipse 不理解 __SIZE_TYPE__ - 这是 GCC 的事情。例如:

      http://gcc.gnu.org/onlinedocs/gccint/Type-Layout.html

      http://gcc.gnu.org/onlinedocs/gcc-3.1/gccint/Driver.html

      这里有一个更完整的解释:

      Where is c++ size_t defined in linux

      【讨论】:

      • Eclipse 不会将size_t 标记为未知类型,就像我在没有定义类型foobar 的情况下键入foobar x; 时一样。如果我添加 typedef __SIZE_TYPE__ foobar;,它会接受 foobar,这让我相信 CDT 要么知道 __SIZE_TYPE__,要么在后台调用 GCC。
      猜你喜欢
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 2012-02-27
      • 2012-08-25
      相关资源
      最近更新 更多