C编译器 - 列出__builtin_类型

时间:2016-10-03 20:31:55

标签: c typedef built-in

这是一个小的(和工作的)C代码:

typedef __builtin_va_list __va_list;

int main() {
    return 0;
}

我找到了答案,gcc如何找到基类型: Pycparser not working on preprocessed code

但是如何列出所有未明确定义的__builtin_“base”类型?

谢谢, 一个。

1 个答案:

答案 0 :(得分:1)

  

如何列出所有未明确定义的__builtin_“base”类型?

TL; DR :没有通用的方法。

标准没有定义任何此类类型,因此它们只能是特定于实现的。特别是,C并未将__builtin_名称前缀赋予任何重要性(尽管这些标识符是保留的),也不承认存在任何不是从它定义的类型派生的类型。因此,对于大多数用途,您要询问的类型应被视为实现细节。

如果有一种方法可以列出特定于实现的内置类型,那么它本身就必须是特定于实现的。例如,您可以在编译器的文档中找到一个列表,例如您所在的列表。如果可以使用,您肯定可以从编译器自己的源代码中派生出一个。您可以从编译器二进制文件中提取字符串,并过滤特征名称模式,例如以“__builtin _”开头的字符串。

您还可以考虑解析所有标准库标头(假设它们是正确的)来查找未声明的类型,但不能保证找到 all 可用的类型。此外,对于某些系统,例如GNU,C标准库(标题所属的)与编译器是分开的。