运行期常量与编译期常量的通俗理解

29次阅读

共计 429 个字符,预计需要花费 2 分钟才能阅读完成。

常量不用解释。

简单说下什么是编译期,什么时运行期

编译期是编译器将你写的代码和资源文件链接编译成可执行文件的这一过程。

运行期是运行前面编译期生成的可执行文件的过程。

以 C ++ 为例
下面解释运行期常量和编译期常量

运行期常量 (const 修饰) 从一开始就存在,而编译期常量 (constexpr 修饰) 在 C ++11 标准之后才加入。

const 修饰的运行期常量,会在运行编译完成后的代码时,先在内存的常量区域开辟空间存放常量的值,以确保常量值不可变,保证程序的正确性。

而现实中存在一些情况,例如 1 + 2 的值恒定不变,或者某个函数在某种情况下的返回值可以由程序员人为确定,并确保程序可以正确运行,而不需要通过存放到内存上的常量区域来保证,这就为代码的优化提供了可能。

编译期常量是由编译器在编译时通过计算来确定常量的值,然后在代码中直接进行替换,类似于 #define MAX 5 在编译时将代码中所有的 MAX 替换成 5 一样,就不需要在后面的运行时再在内存上开辟空间存放常量,以达到优化的效果。

正文完
 0

运行期常量与编译期常量的通俗理解

29次阅读

共计 429 个字符,预计需要花费 2 分钟才能阅读完成。

常量不用解释。

简单说下什么是编译期,什么时运行期

编译期是编译器将你写的代码和资源文件链接编译成可执行文件的这一过程。

运行期是运行前面编译期生成的可执行文件的过程。

以 C ++ 为例
下面解释运行期常量和编译期常量

运行期常量 (const 修饰) 从一开始就存在,而编译期常量 (constexpr 修饰) 在 C ++11 标准之后才加入。

const 修饰的运行期常量,会在运行编译完成后的代码时,先在内存的常量区域开辟空间存放常量的值,以确保常量值不可变,保证程序的正确性。

而现实中存在一些情况,例如 1 + 2 的值恒定不变,或者某个函数在某种情况下的返回值可以由程序员人为确定,并确保程序可以正确运行,而不需要通过存放到内存上的常量区域来保证,这就为代码的优化提供了可能。

编译期常量是由编译器在编译时通过计算来确定常量的值,然后在代码中直接进行替换,类似于 #define MAX 5 在编译时将代码中所有的 MAX 替换成 5 一样,就不需要在后面的运行时再在内存上开辟空间存放常量,以达到优化的效果。

正文完
 0