假如系统最初版本

1
2
3
4
int main() {  
    printf("Hello, world”);  
    return 0;  
} 

怎么升级改造,写出一个可扩展程序?

先思考60秒

下面是我处理该问题解决步骤

  1. 先问自己这个系统架构是什么?
    至少三层架构设计 
      应用层—>标准库(glibc)——>操作系统
  2. 未来5年项目需要变化内容有哪些?
  • 应用层——用户需求发生变化,需要新增功能
  • 标准库—— 提供接口不合适了,需要替换原有功能
  • 操作系统——不处理,在怎么变化也不处理 ,没这个能力
  1. 如何优化
  • 应用层 把c语言改为c++ 面向对象设计,通过虚函数提供接口,动态库实现不同方法替换动态库
  • 标准库(libc++/libstd++)共享库,这个无法替换呢? 提供接口声明为弱符号
     
1
 _GLIBCXX_WEAK_DEFINITION void *operator newsize_t 

   弱符号有什么优势?    在库中提供默认实现的弱定义函数,
允许用户通过自定义强定义版本来覆盖这些函数—这样设计体现可扩展

说明: attribute((weak)) 是 GCC 和 Clang 提供的一个特性,
用于声明一个符号为 “弱符号”(weak symbol),
链接层面提供更多的灵活性

扩展阅读: 驱动程序通常需要支持多种硬件设备,但某些设备可能不支持某些功能。 通过使用弱符号,可以在驱动程序中提供默认实现,同时允许用户为特定设备提供自定义实现