C++ 涉及LPWSTR的这种类型定义是什么意思?
我正试图找到一种替代LPWSTR的方法来将项目移植到gccC++ 涉及LPWSTR的这种类型定义是什么意思?,c++,windows,char,sal,lpwstr,C++,Windows,Char,Sal,Lpwstr,我正试图找到一种替代LPWSTR的方法来将项目移植到gcc typedef __nullterminated WCHAR *NWPSTR, *LPWSTR, *PWSTR; 什么是空终止?那么,如果我做这样的事情是否安全: typedef WCHAR *LPWSTR typedef uu-WCHAR*NWPSTR、*LPWSTR、*PWSTR 部分是SAL注释。SAL是Microsoft特有的技术,用于注释函数参数、返回值、函数行为等,以帮助使用Visual Studio代码分析工具查
typedef __nullterminated WCHAR *NWPSTR, *LPWSTR, *PWSTR;
什么是空终止?那么,如果我做这样的事情是否安全:
typedef WCHAR *LPWSTR
typedef uu-WCHAR*NWPSTR、*LPWSTR、*PWSTR
部分是SAL注释。SAL是Microsoft特有的技术,用于注释函数参数、返回值、函数行为等,以帮助使用Visual Studio代码分析工具查找错误并减少C/C++代码缺陷。您可以在MSDN上阅读有关SAL的信息:
<>代码> WCHAR< <代码> <强>在Windows平台SDK头中定义为“代码> WHARGART T < /Cyt >的TyPulf,它是微软Visual C++编译器中的<强> 16位<强>字符类型。这用作Unicode UTF-16编码的“字符单元”,这是Windows API的默认事实上的Unicode编码。
请注意,Linux上的GNU-GCC等编译器认为<代码> WCARYTT 是32位字符单元(不是16位),因此您必须注意代码的可移植性。
(注意:现代版本的Windows支持Unicode UTF-16和所谓的代理项对,因此您可以使用两个相邻的WCHAR
s来定义代理项对。)
NWPSTR
、LPWSTR
和PWSTR
都是同义词,定义为指向WCHAR
的指针,也就是说,考虑到\u空终止的SAL注释,它们是指向“原始的”C样式NUL终止的Unicode UTF-16字符串的指针
基本上,这是与经典C的char*
相当的Windows Win32 Unicode
<>我已经在C++中编程了几年,我从来没有遇到过这个代码> NWPSTR ,老实说:
名称PWSTR
使用以下元素构建:
P
:指针
W
:“宽”,即WCHAR
/WCHAR\t
-基于,即Unicode UTF-16
STR
:字符串
因此,PWSTR
表示指向WCHAR
/WCHAR\t
字符串的指针,即Unicode UTF-16字符串,如上所述
LPWSTR
只是同一事物的旧名称;最初的L
表示“长”,这可以追溯到有“长指针”可以访问比“短”或“近”指针更远的内存的时代:)那些日子已经不复存在了
而且,如果在这些名称中添加一个
,则只读
对应项就有typedef,例如:
或LPCWSTR
基本上都是const wchar t*
以NUL结尾的Unicode UTF-16字符串
您会发现在Windows头文件和Windows API文档中大量使用了PCWSTR
和较旧的等效LPCWSTR
来表示Unicode UTF-16“输入”(即const
)C样式的NUL终止字符串
typedef uu-WCHAR*NWPSTR、*LPWSTR、*PWSTR
部分是SAL注释。SAL是Microsoft特有的技术,用于注释函数参数、返回值、函数行为等,以帮助使用Visual Studio代码分析工具查找错误并减少C/C++代码缺陷。您可以在MSDN上阅读有关SAL的信息:
<>代码> WCHAR< <代码> <强>在Windows平台SDK头中定义为“代码> WHARGART T < /Cyt >的TyPulf,它是微软Visual C++编译器中的<强> 16位<强>字符类型。这用作Unicode UTF-16编码的“字符单元”,这是Windows API的默认事实上的Unicode编码。
请注意,Linux上的GNU-GCC等编译器认为<代码> WCARYTT 是32位字符单元(不是16位),因此您必须注意代码的可移植性。
(注意:现代版本的Windows支持Unicode UTF-16和所谓的代理项对,因此您可以使用两个相邻的WCHAR
s来定义代理项对。)
NWPSTR
、LPWSTR
和PWSTR
都是同义词,定义为指向WCHAR
的指针,也就是说,考虑到\u空终止的SAL注释,它们是指向“原始的”C样式NUL终止的Unicode UTF-16字符串的指针
基本上,这是与经典C的char*
相当的Windows Win32 Unicode
<>我已经在C++中编程了几年,我从来没有遇到过这个代码> NWPSTR ,老实说:
名称PWSTR
使用以下元素构建:
P
:指针
W
:“宽”,即WCHAR
/WCHAR\t
-基于,即Unicode UTF-16
STR
:字符串
因此,PWSTR
表示指向WCHAR
/WCHAR\t
字符串的指针,即Unicode UTF-16字符串,如上所述
LPWSTR
只是同一事物的旧名称;最初的L
表示“长”,这可以追溯到有“长指针”可以访问比“短”或“近”指针更远的内存的时代:)那些日子已经不复存在了
而且,如果在这些名称中添加一个
,则只读
对应项就有typedef,例如:
或LPCWSTR
基本上都是const wchar t*
以NUL结尾的Unicode UTF-16字符串
你会的