gpt4 book ai didi

c++ - "const"是如何实现的?

转载 作者:可可西里 更新时间:2023-11-01 18:16:27 25 4
gpt4 key购买 nike

C 或 C++ 编译器(例如 gcc)如何遵守 const 声明?

例如,在下面的代码中,编译器如何跟踪变量ciconst并且不能被修改?

int
get_foo() {
return 42;
}

void
test()
{
int i = get_foo();
i += 5;

const int ci = get_foo();
// ci += 7; // compile error: assignment of read-only variable ?ci?
}

最佳答案

很像变量的任何其他符号信息(地址、类型等)。通常有一个符号表存储有关已声明标识符的信息,每当遇到对该标识符的另一个引用时都会查询它。

(一个更有趣的问题是,这种知识是否只存在于编译期间甚至运行时。大多数语言在编译后丢弃符号表,因此即使声明了标识符,您也可以操纵编译后的代码并强制使用新值 ' const'。它需要一个复杂的运行时系统(和代码签名)来防止这种情况。)

关于c++ - "const"是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7893220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com