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

歡迎光臨散文網(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)遵守國家法律
稻城县| 南溪县| 诏安县| 巢湖市| 枞阳县| 尖扎县| 会同县| 二连浩特市| 盐亭县| 巴彦县| 息烽县| 澎湖县| 年辖:市辖区| 石景山区| 康平县| 霸州市| 抚松县| 金华市| 溧阳市| 阿拉善左旗| 手机| 延寿县| 仙居县| 九龙坡区| 苏尼特右旗| 兴海县| 涞源县| 东莞市| 清镇市| 涡阳县| 南皮县| 太和县| 高密市| 根河市| 会宁县| 时尚| 紫阳县| 沧源| 绿春县| 逊克县| 子长县|