自己的理解:
全程序优化允许编译器利用程序所有模块的信息执行优化。 无全程序优化的情况下,则对每个模块(编译单位)执行优化。
简单来说,就是你选择 是 编译器全模块进行优化,然后按指定规则进行优化。
来看看优化内容
利用所有模块的信息,编译器可以:
-
优化寄存器跨函数边界的使用。
-
更好地跟踪对全局数据的修改,从而减少负载量和存储量。
-
跟踪指针取消引用修改的可能项集,减少所需的负载量和存储量。
-
即使在某个模块中定义了函数,也可以在另一个模块中内联该函数。
上述看完我基本上模模糊糊的,
我的理解是为了偷懒,但是你这一偷懒会导致一些东西链接不上,就出现警告了例如
warning LNK4075: 忽略“/INCREMENTAL”(由于“/OPT:ICF”规范)
这里涉及到连接器的一些高级功能,对我来说就不太清楚,自己稍微了解了下。
感觉大概是这么个意思,(解释器、编译器,需要用连接器进行链接)
我链接器需要把解释器的东西进行链接进行编译,我连接器自己就优化下,然后我有自己的规则,比如函数怎么找函数内容等等,估计使用汇编写,毕竟涉及到寄存器了,然后函数编辑估计有使用规则进行优化。
估计优化也是有规则的,我们自己的属性设置不咋滴符合要求,就报警告了。基本上到这里就可了。我不使用就完事了,老老实实给我连接就行,不用你优化,不要你的优惠。