[c++] inline内联、静态和动态链接

1.内联

inline内联是告诉编译器变量或者函数将会在多个地方使用。

1)变量

  在多个编译单元(cpp和h文件中)出现同名内联的符号时,编译器会选择一个作为唯一版本并且传递给所有编译单元。这样做的好处是,可以避免多个文件包含同一个变量造成的冲突。

2)函数

  建议对代码量较小的函数进行内联。

  一般情况下,编译器只会将函数转化为一个指令代码块,然后其他所有调用的地方都会放置一个跳转指令去调用这个函数。而内联的函数,则会在所有调用的地方直接写入编译的指令代码块。可以有效提高运行速度,缺点是会使得编译后的文件变大。

2.静态和动态链接

1)静态库

  会在链接阶段将汇编生成的目标文件(.o)和引用到的库一起链接打包到可执行文件中。优点是便于移植,缺点是会浪费一些文件空间。静态库文件一般后缀名为 .lib 和 .a 。

2)动态库

  编译时不会链接到目标代码中,而是在运行时载入。这样多个程序可以使用一份库(内存中也只会有一份实例)。同时还可以减小文件大小以及可以容易地更换依赖库。动态库文件一般后缀名为 .so 和 .dll 。

 

posted @ 2022-03-29 21:25  Cheung-10  阅读(148)  评论(0)    收藏  举报