Cpp_multiFile

Kiyotaka Wang Lv3

多文件MultiFile

三个问题

Q1:能在不降低可读性的前提下,降低COST吗?(不产生function call)

  • 代码段的cost (时间)
    • 参数传递 (push)
    • 保持现场 (ret addr) (frame)
  • Stack的cost (空间)
    • 参数空间
    • 环境
  • 代码替换,不存在参数传递与现场调换 (Compiler)
    • inline : 主动申请
    • 联系 : virtual

Compiler帮你做改进

函数前面加上inline

inline的坏处:无法递归、函数指针没有了、代码段拉长了

循环不被认为是简单的代码

Q2:使用Lib需要注意什么?

  • C/C++ 符号表不同,cpp 函数名因为重载与 C 不同

Q3:执行性呢?

  • 安全问题
    • 防止写入攻击,写和执行是正交的
    • ROP
      • 监视 : 指令两步跳转有问题
      • 防止踩点
        • 读和执行的正交
        • Loader 地址 random

程序组织

作用域

#include告诉编译器提前做一些编辑工作,将库函数的代码粘贴到你的程序里面

extern告诉编译器有这个名称的函数或变量会在其他地方声明

static的变量作用域很小,但生命周期遍及整个程序,也就是说虽然我在其他地方不能直接使用它,但我想保留它的值

C/C++ 中 static 的用法全局变量与局部变量 | 菜鸟教程 (runoob.com)

不建议在同一作用域两次使用using-directive

优先考虑using-declaration(ppt比较老,应该是<cstdio>)

编译预处理

  • 与作用域、类型、接口等概念格格不入
  • 编辑处理 : 不懂任何语法,仅仅是文本上的编辑
  • 缺陷:
    • 潜伏于环境
    • 穿透作用域

  • 标题: Cpp_multiFile
  • 作者: Kiyotaka Wang
  • 创建于 : 2022-10-11 19:57:28
  • 更新于 : 2022-11-21 13:04:50
  • 链接: https://hmwang2002.github.io/2022/10/11/cpp-multifile/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。