如果我定义一个具有任意数据类型的结构,如:
struct custom_type {
int a;
float b;
char c;
float *d; // etc...
};
是否有一个使用模板编程(C)的常见模式来提取此结构的字段类型并在编译时将它们映射到某些特定于类型的代码处理程序?
一些上下文:我正在创建一个api,允许客户端定义他们自己的任意自定义类型,并且仍然允许那些与我用于管理和内省这些类型的底层系统集成,进行自动内存管理和其他内务管理.
“包装”模板或其他机制将允许此集成,而底层系统不知道有关定义自定义类型的头文件的任何信息.从客户端的角度来看,代码以正常方式访问结构,但模板允许对结构中的每个字段进行泛型处理.
谢谢.
最佳答案 不,使用标准C语言中的模板或任何其他功能是不可能的.这种特征被称为内省或反思.如果您使用这些术语进行搜索,您会发现一些可以在构建时提供此类信息的外部工具(例如clang);生成后,您可以运行执行代码生成的自定义工具.