Windows C++:LPCTSTR与const TCHAR

use*_*297 2 c++ windows string winapi tchar

在我的应用程序中,我在我的代码顶部附近声明一个字符串变量来定义我的窗口类的名称,我在调用RegisterClassEx,CreateWindowEx等时使用它.现在,我知道LPCTSTR是一个typedef并且最终会跟进到TCHAR(根据是否定义了UNICODE,以及CHAR或WCHAR),但我想知道使用它是否更好:

static LPCTSTR szWindowClass = TEXT("MyApp");
Run Code Online (Sandbox Code Playgroud)

或这个:

static const TCHAR szWindowClass[] = TEXT("MyApp");
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢使用LPCTSTR来自JavaScript,PHP,C#背景我从未真正考虑将字符串声明为字符数组.

但实际上使用一个优于另一个是否有任何优势,或者它实际上甚至对我选择哪一个都没有影响?

谢谢你,先进的,你的答案.

Mar*_*som 5

这两个声明并不完全相同.第一个创建一个指针,第二个创建一个TCHAR数组.差异可能不明显,因为如果您尝试使用它,数组将分解为指针,但如果您尝试将它们放入结构中,您会立即注意到它.

LPCTSTR的等效声明是:

static const TCHAR * szWindowClass = TEXT("MyApp");
Run Code Online (Sandbox Code Playgroud)

LPCTSTR中的"L"代表"Long",自16位Windows编程以来一直没有相关性,可以忽略.