我經常讀到當編譯爲PChar
時編譯器會做某種魔法。PChar/PWideChar/PAnsiChar演員中是否有編譯器魔法?
的PChar
的主要目的是調用外來代碼在期望字符的零終止陣列(C風格「串」)文庫。
PChar
是Unicode Delphi中PWideChar
的別名,在非Unicode的Delphi上是PAnsiChar
的別名。
德爾福字符串(string
= AnsiString
/UnicodeString
,我不是在談論WideString
這裏,更不用說ShortString
...),另一方面有一個隱藏的長度,而不是終止字符。它們也被引用計數並在寫入時使用拷貝。
Delphi字符串是否會自動分配並保留一個字符長度並帶有隱式#0字符,以便更容易轉換爲PChar
(PAnsiChar/PWideChar),或者編譯器在遇到轉換時檢查和調整字符串到PChar
?
我不懷疑**大多數**開發者使用'PChar'及其同類的主要原因是調用外部代碼,但這不是他們的字面意思。它們是Delphi中定義的各種字符串類型的指針類型。從技術角度來看,這就是他們的全部。 – LaKraven 2013-02-20 13:25:26
@LaKraven'PChar'周圍的所有魔法使它不僅僅是一個指針。 – 2013-02-20 13:33:14