作者查詢 / loveme00835

總覽項目: 發文 | 留言 | 暱稱
作者 loveme00835 在 PTT [ C_and_CPP ] 看板的留言(推文), 共8629則
限定看板:C_and_CPP
[問題] C++考題 - [](){}()是甚麼意思
[ C_and_CPP ]26 留言, 推噓總分: +6
作者: wawi2 - 發表於 2020/07/26 10:56(3年前)
3Floveme00835: [](){} 是 lambda expr, 它的功用就是建立 closure07/26 11:08
4Floveme00835: 物件, 在 lambda expr 後面直接加上 () 是針對這個07/26 11:09
5Floveme00835: function object 直接呼叫, 所以整個敘述的型別取決07/26 11:10
6Floveme00835: 於 lambda expr 裡的 return statement, 這個常被用07/26 11:10
7Floveme00835: 於物件的初始化, 某些物件必須要在建構的時候就完全07/26 11:11
8Floveme00835: 給足參數, 沒辦法先用 default ctor 建構之後才用07/26 11:11
10Floveme00835: init() 之類的成員去預備好物件狀態, 所以常會在這個07/26 11:12
11Floveme00835: lambda expr 裡做好需要的判斷, 所以你會經常看到 if07/26 11:13
12Floveme00835: /switch 語句在裡頭, 通常回傳的物件會是 movable,07/26 11:18
13Floveme00835: 這時候的 closure 起到的就是 inline factory method07/26 11:18
14Floveme00835: 的角色07/26 11:18
[問題] C貪食蛇問題
[ C_and_CPP ]17 留言, 推噓總分: 0
作者: a71245969 - 發表於 2020/07/19 21:52(3年前)
4Floveme00835: 用 switch 不建議加 default label07/19 22:42
6Floveme00835: 使用 default 編譯器就沒機會幫你找出未處理的 case07/19 22:50
7Floveme00835: 而 non-enum 也要好好考慮是否真的適用 switch07/19 22:51
8Floveme00835: https://godbolt.org/z/9Ws5v307/19 22:51
9Floveme00835: 寫 C++ 最重要的概念是把檢查的工作都交給編譯器, 編07/19 22:52
10Floveme00835: 得過的程式碼就不容易出錯07/19 22:53
11Floveme00835: 上面程式碼應該下 -Wswitch 搭配 default 0rz07/19 22:57
12Floveme00835: 比較好的設計是把輸入和程式內部表示分開, switch07/19 22:59
13Floveme00835: over char 是權責沒有分離的例子, 既然 switch 的07/19 23:01
14Floveme00835: label 數量是固定的, 就沒道理使用 char 來表示方向,07/19 23:02
15Floveme00835: 一來不能用程式碼來闡述設計, 二來因為値域太大的關07/19 23:03
16Floveme00835: 係, 所有介面以及運算都是潛在會出 bug 的地方07/19 23:05
[問題] 用書分析或推薦
[ C_and_CPP ]25 留言, 推噓總分: +2
作者: spong - 發表於 2020/07/15 17:15(3年前)
6Floveme00835: 可以試著看看原文書, 中譯品質都不是很好07/15 20:27
7Floveme00835: Primer -> Standard Library -> Exceptional C++ ->07/15 20:31
8Floveme00835: Templates 照這個難度看完你就可以啃更進階的書了07/15 20:31
9Floveme00835: 如果你未來打算看 Effective 系列建議從 Effective S07/15 20:42
10Floveme00835: TL 開始07/15 20:42
11Floveme00835: 學 C++ 最重要的是學習它風格還有哲學, 從標準庫對設07/15 20:48
12Floveme00835: 計還有實作開始, 接著 Exceptional C++ 可以補充更多07/15 20:48
13Floveme00835: 語用範例07/15 20:48
15Floveme00835: 看 Effective STL 主要可以知道有什麼工具可以用, 以07/15 21:05
16Floveme00835: 及這個工具是如何運作, 看完甚至可以自己寫更多小工07/15 21:05
17Floveme00835: 具. 這是 Effective 系列其他本沒辦法學到的; 而且才07/15 21:05
18Floveme00835: 能讓一個人寫出真正的 C++07/15 21:05
scanf_s回傳值問題
[ C_and_CPP ]8 留言, 推噓總分: +1
作者: sweetfat - 發表於 2020/07/15 11:44(3年前)
6Floveme00835: 難得看到有接回傳值 :)07/15 12:51
[討論] 該學習C++嗎?
[ C_and_CPP ]203 留言, 推噓總分: +52
作者: Matz - 發表於 2020/07/08 19:13(3年前)
39Floveme00835: 人活得好好地為什麼要學希佳佳呢 Q_Q07/11 01:53
57Floveme00835: 用 OOP/SOLID 來考慮學 C++ 是否搞錯什麼 xD C++ 的07/13 10:59
58Floveme00835: 特色又不是 OO07/13 10:59
141Floveme00835: 以為走錯板, 原來是在討論 Ancient C++07/13 18:37
151Floveme00835: 要嘴 @MartinJ40 的連結跟 macro 也先看一下 [P1371]07/13 19:05
152Floveme00835: 跟 [P1221] 的狀態, C++ 也是 community driven lang07/13 19:07
153Floveme00835: 還要經過 ISO commitee review, 除了相容性要顧最重07/13 19:09
154Floveme00835: 要的是 "標準化" 這件事. 你喜歡其他語言是你的自由,07/13 19:10
155Floveme00835: 但是在說 "某語言都沒有什麼特性" 前先搞清楚自己是07/13 19:11
156Floveme00835: 不是真的熟悉它, 然後如果覺得什麼特性很缺, 你可以07/13 19:12
157Floveme00835: 發提案, 這就是 how modern C++ looks like07/13 19:12
158Floveme00835: 看討論還以為是考古學有什麼重要發現07/13 19:13
159Floveme00835: 簡單的說, 不需要標準化的語言你想要什麼特性都很容07/13 19:15
160Floveme00835: 易07/13 19:15
183Floveme00835: 你已經幫我回答大部分的問題了. 語言標準化尤其是 IS07/13 20:06
184Floveme00835: O 標準, 最終都是為了服務業界. 所以有關 functional07/13 20:06
185Floveme00835: language 的提案被 reject 是常有的事情, 能用舊特07/13 20:06
186Floveme00835: 性達成的功能, 除非新特性可以做得更好更有 "效率",07/13 20:07
187Floveme00835: 否則它不會變成語言的一部分. 標準化圍繞在軟體開發07/13 20:07
188Floveme00835: 議題上; 而不是發掘語言的可能性. 所以前面才會說道07/13 20:07
189Floveme00835: 先熟悉這個語言再來評論比較好07/13 20:07
190Floveme00835: 這就好像討論為什麼魚沒有腳, 所以和雞比牠絕對跑不07/13 20:09
191Floveme00835: 快一樣.07/13 20:09
192Floveme00835: 你來魚板不去了解為什麼魚不長腳, 然後推廣雞有腳多07/13 20:11
193Floveme00835: 棒不是很奇怪嗎? 而且我從來沒有說過魚是最棒的生物,07/13 20:11
194Floveme00835: 你的自然語言可能也有待加強.07/13 20:11
[問題] 寫大量沒有安全漏洞的C代碼很困難
[ C_and_CPP ]57 留言, 推噓總分: +12
作者: dharma - 發表於 2020/07/05 17:11(3年前)
12Floveme00835: 你會發現在這個板問問題得到的答案都是改寫別的語言07/06 21:39
13Floveme00835: 確保安全性不從語言層面做的話就得要寫的人下手, 可07/06 21:49
14Floveme00835: 以參考 CERT/MISRA, 只是在工具使用還有人員訓練做 t07/06 21:49
15Floveme00835: rade-off 而已07/06 21:49
16Floveme00835: 後來你會發現與其花錢買商用軟體檢查漏洞, 叫員工讀07/06 21:55
17Floveme00835: 熟語言標準, 遵守某種寫碼規範, 總總措施還不如直接07/06 21:56
18Floveme00835: 改用不容易犯錯的語言成本來得低廉07/06 21:56
28Floveme00835: 以專案管理的角度來說:決定要穿這鞋子也是你的問題07/11 22:28
29Floveme00835: 事實就是雖然成為程式語言, 但會真的當語言學習的人07/11 22:34
30Floveme00835: 並不多, 所以寫出來的東西都像小朋友用積木兜出來的,07/11 22:34
31Floveme00835: 看寫法就知道一定會出 bug07/11 22:34
38Floveme00835: 語法->語意->語用, 只到第一層, 對第二層一知半解,07/13 09:29
39Floveme00835: 這就是你說的「能溝通就好」. 不過因為語言的複雜度,07/13 09:29
40Floveme00835: 這個議題已經和一般開發者沒什麼關係了07/13 09:29
43Floveme00835: 我的意思是, 問題的核心在於開發者不懂自己在寫什麼,07/13 12:01
44Floveme00835: 而不是有沒有選對語言, 選錯語言還是可以做對事情,07/13 12:01
45Floveme00835: 只是付出成本比較高. 所以一開始用語言來評斷就是錯07/13 12:01
46Floveme00835: 的立論, 終究是人的問題07/13 12:01
[問題] 專案中的 include/lib 資料夾該放什麼
[ C_and_CPP ]39 留言, 推噓總分: +2
作者: poolongkong - 發表於 2020/07/12 20:43(3年前)
6Floveme00835: 你覺得介面實作分開是為了什麼?07/13 03:27
7Floveme00835: 把東西放在標頭檔再分離編譯的情況, 對不同的 transl07/13 03:43
8Floveme00835: ation unit 來說, 引入的多份型別/模板/物件彼此其實07/13 03:43
9Floveme00835: 是不一樣的; 但因為要保證 ODR 所以它們被視為是相同07/13 03:43
10Floveme00835: 的實體. 即使模板也可以細分有無特化/具現化, 一般最07/13 03:43
11Floveme00835: 簡單的使用通常都是無特化再透過 implicit instantia07/13 03:43
12Floveme00835: tion 來自動產生實作, 因為要完整的程式碼才有辦法做07/13 03:43
13Floveme00835: 的這件事, 所以才會有模板實作都要寫在標頭檔的錯覺.07/13 03:43
14Floveme00835: 事實上模板也可以寫成像你說的一樣: 介面/實作分離,07/13 03:43
15Floveme00835: 但要很明白你的目的, 因為這種寫法很容易違反 ODR.07/13 03:43
16Floveme00835: 先明白 include 只是複製貼上, 那再來從 ODR 的角度07/13 03:52
17Floveme00835: 思考為什麼有的東西可以放在標頭檔裡其他的卻會造成07/13 03:52
18Floveme00835: 連結錯誤, 再來想想這樣分開寫到底有什麼好處. 如果07/13 03:52
19Floveme00835: 今天我分開寫沒辦法得到上述的好處, 也不會造成連結07/13 03:52
20Floveme00835: 錯誤的話, 當然全寫在標頭檔裡比較方便囉 (節省同步07/13 03:52
21Floveme00835: 的成本).07/13 03:52
22Floveme00835: 開發軟體最經常遇到的就是改變, 最害怕的也是改變.07/13 04:02
23Floveme00835: 開發上分成兩個角色: library user & developer. use07/13 04:02
24Floveme00835: r 因為只是不需要知道細節, 所以有一份標頭檔和已經07/13 04:02
25Floveme00835: 編好的函式庫檔就可以做開發, developer 有任何改動,07/13 04:02
26Floveme00835: 如果不是改在標頭檔內, 所以 user 所需要做的最多就07/13 04:02
27Floveme00835: 是重新連結而已. 介面/實作分離一方面就是要避免 use07/13 04:02
28Floveme00835: r 重複做編譯的動作 (編譯防火牆), 如果函式庫含有商07/13 04:02
29Floveme00835: 業機密通常也會這樣做 (看授權) 所以撰碼的時候身分07/13 04:02
30Floveme00835: 需要持續切換, 作為 developer 時就要思考怎樣讓 use07/13 04:02
31Floveme00835: r 減少編譯次數, 在介面上做最少改動; 作為 user 的07/13 04:02
32Floveme00835: 時候思考介面設計是否方便合理.07/13 04:02
33Floveme00835: 簡單說如果一個實作萬年不變, 而且沒有需要/可能減少07/13 04:06
34Floveme00835: 編譯次數/時間的考量, 就會直接寫在標頭檔裡.07/13 04:06
35Floveme00835: 以 ISO 標準教學流程 [P1389R1] 來說這個應該歸在最07/13 05:20
36Floveme00835: 後的工具介紹階段裡, 對語言特性更了解後才比較清楚07/13 05:20
37Floveme00835: 該怎麼拿捏. 只是為了教學方便很容易跳過這些基礎知07/13 05:20
38Floveme00835: 識, 不過關鍵字: ODR 可以先深入學習.07/13 05:20
[分享] EA 終極動員令部分開源
[ C_and_CPP ]27 留言, 推噓總分: +2
作者: mmmmei - 發表於 2020/07/07 21:13(3年前)
11Floveme00835: 之前 Jason Turner 就有 live stream code review07/09 01:29
12Floveme00835: CnC: https://youtu.be/Oee7gje-XRc 不過這種古早的07/09 01:30
13Floveme00835: 扣你是可以學習他們的架構設計, 但是其他的就不必了07/09 01:30
14Floveme00835: 標準在變文化在變, 除非你想讓人覺得自己食古不化,07/09 01:31
15Floveme00835: 不然現今光是 C++ Core Guidelines 就夠你學了, 看不07/09 01:32
16Floveme00835: 懂 Modern C++ Style 才比較慘07/09 01:33
[問題] 老書中的一段程式碼跟可移植性敘述
[ C_and_CPP ]20 留言, 推噓總分: +3
作者: saladim - 發表於 2020/07/07 13:37(3年前)
5Floveme00835: N2176 裡除了 6.9.1/9 還有 Annex J J.1/1 裡有特別07/08 18:47
6Floveme00835: 提到: "The layout of the storage for parameters07/08 18:49
7Floveme00835: is unspecified" 意思是說編譯器實作有權利選擇如何07/08 18:50
8Floveme00835: 存放參數的值, 來達成某種目的, 像是 ABI 相容或優化07/08 18:51
9Floveme00835: 等等, 這個情況下編譯器也許會插入轉換的程式碼讓你07/08 18:52
10Floveme00835: 取得正確的值 (tmp = zz); 但如果直接拿指標去指向參07/08 18:53
11Floveme00835: 數, 看到的記憶體內容不保證和一般的變數相同07/08 18:54
12Floveme00835: 但這不是 endianness 的問題, 而是語言設計問題07/08 19:01
[問題] 新手if用法問題
[ C_and_CPP ]13 留言, 推噓總分: +4
作者: lllll12b56 - 發表於 2020/07/05 16:52(3年前)
13Floveme00835: 在 C 裡兩者是一樣的07/06 22:55