最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C++(5.5) const 和 static 成員

2023-04-05 16:23 作者:咸魚暄  | 我要投稿

關(guān)于這條視頻里

?
19:22
?

處在 Compiler Explorer 跑代碼翻車的解釋:

具體問題是,這段代碼能編譯通過,雖然 Foo::a 沒有被定義:

原因是,當(dāng)時(shí)編譯選項(xiàng)里有一個(gè) -O1,因此編譯器會(huì)做一些優(yōu)化。而在代碼里,我們使用 Foo::a 的唯一地方是 main 里用它初始化了 x;但是由于 x 后續(xù)沒有被使用,因此編譯器把 x 的定義優(yōu)化掉了,所以 Foo::a 就沒有被使用了,因此沒有報(bào)錯(cuò)。

具體來說,目前 C++ 編譯分為 9 個(gè)步驟,大概可以理解為 1~6 完成詞法分析,7~8 完成語法、語義分析和代碼生成,9 完成鏈接。我們期望的「找不到定義」的錯(cuò)誤是鏈接錯(cuò)誤,發(fā)生在第 9 階段;但由于在 7~8 階段中編譯器把 int x = Foo::a; 已經(jīng)優(yōu)化沒了,所以程序中沒有對(duì) Foo::a 的訪問了,因此沒有發(fā)生鏈接錯(cuò)誤。

如果用不會(huì)被優(yōu)化掉的方式訪問 Foo::a,我們就能看到預(yù)期的鏈接錯(cuò)誤:

上課的時(shí)候沒有看出來這個(gè)問題,抱歉QWQQQ

C++(5.5) const 和 static 成員的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
桑日县| 海城市| 隆子县| 阿拉善右旗| 长兴县| 晋城| 新野县| 滁州市| 安丘市| 长寿区| 大姚县| 尚志市| 石阡县| 朔州市| 任丘市| 龙岩市| 扎兰屯市| 临夏市| 临汾市| 衡阳市| 华阴市| 双桥区| 特克斯县| 闽清县| 小金县| 明光市| 达拉特旗| 通河县| 惠安县| 慈利县| 西林县| 弋阳县| 都安| 桂林市| 尉氏县| 微博| 丰台区| 方正县| 林西县| 海安县| 云南省|