(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:47 AM
2
[廢] 新知環節
久違的又有新知了
不知道今天會不會有更多新知
(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:48 AM
昨天在改某段 code 結果一直噴錯
噴的錯誤內容是沒有辦法把一個 const wchar_t* 的東西丟進要 PWCHAR 的地方當 input parameter
(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:49 AM
原本以為是目標 function 的那個參數沒有下 const
但實際去看是有的
(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:49 AM
後來仔細看了一下他寫的是 const PWCHAR
這就是機巴的問題所在
(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:50 AM
PWCHAR 是微軟不知道哪時候
發神經
作的其中一個 typedef
代表的是 WCHAR*
WCHAR 也是 typedef,代表的是 wchar_t
(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:50 AM
所以理論上應該要長得一樣 (嗎
但實際上沒有
(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:52 AM
const PWCHAR 代表的是 PWCHAR 的那個變數本身在宣告後不可以指到其他記憶體
寫成最基礎的形式 (有可能) 長這樣
wchar_t * const
(讀作: const pointer of wchar_t)
會不太確定是不是這樣寫是因為平常很少會需要這樣做
(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:53 AM
Thu, Feb 17, 2022 2:59 AM
而我本來要的是 const WCHAR*
寫成最基礎的形式是 const wchar_t*
(讀作: pointer of const wchar_t)
(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:53 AM
這個的意思是
這個 pointer 所指到的記憶體
存放的資料不可以改變
(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:54 AM
反而前者的那個寫法,雖然被限制了不可以指到其他記憶體,但記憶體中存放的資料本身是可以改變的
(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:55 AM
而且這個寫法寫在 function 的 input parameter 的時候是沒有意義的
在 compile 的時候那個 const 就會直接被拿掉
這也是為什麼在看 error 的時候沒有看到 const 的字眼 (by 家裡ㄉ人
(σ゚∀゚)σ
@zkelly3
Thu, Feb 17, 2022 2:55 AM
所以說當初幹嘛長 PWCHAR 這種北七的寫法
載入新的回覆
久違的又有新知了
不知道今天會不會有更多新知
噴的錯誤內容是沒有辦法把一個 const wchar_t* 的東西丟進要 PWCHAR 的地方當 input parameter
但實際去看是有的
這就是機巴的問題所在
發神經作的其中一個 typedef代表的是 WCHAR*
WCHAR 也是 typedef,代表的是 wchar_t
但實際上沒有
寫成最基礎的形式 (有可能) 長這樣
wchar_t * const
(讀作: const pointer of wchar_t)
會不太確定是不是這樣寫是因為平常很少會需要這樣做寫成最基礎的形式是 const wchar_t*
(讀作: pointer of const wchar_t)
這個 pointer 所指到的記憶體
存放的資料不可以改變
在 compile 的時候那個 const 就會直接被拿掉
這也是為什麼在看 error 的時候沒有看到 const 的字眼 (by 家裡ㄉ人
所以說當初幹嘛長 PWCHAR 這種北七的寫法