Topic: SQLite ?

对于现代语言,比如java、c#、ruby等,很容易就可以从语言层面实现反射,从而实现ioc控制、依赖注入等,最典型的就是java中的 spring框架。而对于c、c++语言,从语言层面很难实现反射,如果非要实现,则只能从语言之后的东西来着手。语言之后是什么呢,不外乎编译器、可执行文件格式、加载器、操作系统等。
      从上面的几个选项上思考,因为反射需要根据运行时候的信息,反查找到代码信息,所以,如果要实现反射机制,至少应该在代码的可理解信息被编译器去掉将函数名称换成函数地址,变量名称换成变量)以前,就需要着手开始工作,记录下反射需要的信息,并设法将这部分信息一直保存到最终的可执行文件当中。     
      同时,为了实现动态的配置,动态载入代码运行,还需要设计一个加载器,在配置文件发生变化的时候,从新的地址加载代码,代替原来的代码,其实这可以理解成为以前经常使用的补丁机制。只有实现了所有这些机制,c语言的反射才可以发会作用。
      至于c++中的反射机制,还可以考虑修改编译器,编译的时候,在每个类中动态的插入静态的(static)获取类的名称的方法、获取类空间大小的方法、获取类的父类子类等的方法,这样可以获取运行时候的每个类的信息。至于类的动态加载运行,则需要考虑类的大小,动态的给类分配空间,并动态指定类的父类、子类的地址%E
soccer uniform | cheap jerseys | football shirt shop

Last edited by Neeraj555 (2013-09-13 08:45:02)