C 编译器 - 列出 __builtin_ 类型
C compiler - list __builtin_ types
这是一个小的(可以工作的)C 代码:
typedef __builtin_va_list __va_list;
int main() {
return 0;
}
我找到了答案,gcc 是如何找到基类型的:
Pycparser not working on preprocessed code
但是我如何列出所有未明确定义的 __builtin_ "base" 类型?
谢谢,
一.
how can I list all of the __builtin_ "base" types, which not defined explicitly?
TL;DR: 没有 general-purpose 方法。
标准没有定义任何这样的类型,所以它们只能是implementation-specific。特别是,C 不赋予 __builtin_
名称前缀任何意义(尽管此类标识符是保留的),也不承认存在任何不是从它定义的类型派生的类型。因此,对于大多数用途,您询问的类型应被视为实现细节。
如果有一种方法可以列出 implementation-specific built-in 类型,它必然是 implementation-specific 本身。例如,您可能能够在编译器的文档中找到您想要的列表。如果可以的话,您肯定可以从编译器自己的源代码中派生出一个。您也许可以从编译器二进制文件中提取字符串,并过滤特征名称模式,例如以“__builtin_”开头的字符串。
您还可以考虑解析所有标准库 headers(假设它们是正确的)以查找未声明的类型,尽管不能保证找到 all可用的类型。此外,对于某些系统,例如 GNU,C 标准库(headers 所属)与编译器是分开的。
这是一个小的(可以工作的)C 代码:
typedef __builtin_va_list __va_list;
int main() {
return 0;
}
我找到了答案,gcc 是如何找到基类型的: Pycparser not working on preprocessed code
但是我如何列出所有未明确定义的 __builtin_ "base" 类型?
谢谢, 一.
how can I list all of the __builtin_ "base" types, which not defined explicitly?
TL;DR: 没有 general-purpose 方法。
标准没有定义任何这样的类型,所以它们只能是implementation-specific。特别是,C 不赋予 __builtin_
名称前缀任何意义(尽管此类标识符是保留的),也不承认存在任何不是从它定义的类型派生的类型。因此,对于大多数用途,您询问的类型应被视为实现细节。
如果有一种方法可以列出 implementation-specific built-in 类型,它必然是 implementation-specific 本身。例如,您可能能够在编译器的文档中找到您想要的列表。如果可以的话,您肯定可以从编译器自己的源代码中派生出一个。您也许可以从编译器二进制文件中提取字符串,并过滤特征名称模式,例如以“__builtin_”开头的字符串。
您还可以考虑解析所有标准库 headers(假设它们是正确的)以查找未声明的类型,尽管不能保证找到 all可用的类型。此外,对于某些系统,例如 GNU,C 标准库(headers 所属)与编译器是分开的。