C中的反射支持
我知道它不被支持,但我想知道是否有任何技巧。 有小费吗?
一般来说,反思是程序分析某些代码结构的手段。 此分析用于更改代码的有效行为。
作为分析的反思通常非常薄弱; 通常它只能提供对函数和字段名称的访问。 这种弱点来自于语言实现者,他们基本上不希望在运行时使完整的源代码可用,以及适当的分析例程以从源代码中提取想要的东西。
另一种方法是通过使用强大的程序分析工具来处理程序分析,例如,可以按照编译器的方式精确地解析源文本。 (通常人们建议滥用编译器本身来做到这一点,但这通常不起作用;编译器机器想成为一个编译器,很难将其用于其他目的)。
需要的是一个工具:
使用这样的机制,可以在需要的任何详细级别上实现分析,然后转换代码以实现运行时反射将实现的效果。 有几个主要的好处:
请参阅我们的DMS Software Reengineering Toolkit,了解可以为C,Java和COBOL完成所有上述操作的系统,其中大部分适用于C ++。
围绕它的任何技巧? 有小费吗?
编译器可能会有选择地生成'调试符号文件',调试器可以用它来帮助调试代码。 链接器也可以生成一个'映射文件'。
技巧/提示可能是生成并读取这些文件。
基于对如何将反射添加到C ++应用程序的响应? (堆栈溢出)和C ++被认为是C的“超集”的事实,我会说你运气不好。
还有一个关于为什么C ++没有反射(Stack Overflow)的很好的答案。
链接地址: http://www.djcxy.com/p/47637.html