在我的应用程序中,我在代码顶部附近声明了一个字符串变量来定义我在调用 RegisterClassEx、CreateWindowEx 等时使用的窗口类的名称。现在,我知道 LPCTSTR 是一个 typedef 并且最终会遵循 TCHAR(以及 CHAR 或 WCHAR,具体取决于是否定义了 UNICODE),但我想知道使用它是否更好:
static LPCTSTR szWindowClass = TEXT("MyApp");
或这个:
static const TCHAR szWindowClass[] = TEXT("MyApp");
我个人更喜欢使用 LPCTSTR,因为它来自 JavaScript、PHP、C# 背景,我从未真正考虑过将字符串声明为字符数组。
但实际上使用一种比另一种有什么优势吗,或者实际上对我选择哪一种没有任何影响?
先谢谢你的回答。
最佳答案
这两个声明并不相同。第一个创建一个指针,第二个创建一个 TCHAR 数组。差异可能并不明显,因为如果您尝试使用数组,它会分解为一个指针,但例如,如果您尝试将它们放入一个结构中,您会立即注意到它。
LPCTSTR 的等效声明是:
static const TCHAR * szWindowClass = TEXT("MyApp");
LPCTSTR 中的“L”代表“Long”,自 16 位 Windows 编程以来就不再相关,可以忽略。
关于c++ - Windows C++ : LPCTSTR vs const TCHAR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2991406/