gpt4 book ai didi

C++ 为什么 const LPSTR 与 const char * 不同?

转载 作者:搜寻专家 更新时间:2023-10-31 00:30:07 25 4
gpt4 key购买 nike

为什么下面的代码可以编译?

void foo(const LPSTR str) {
str[0] = '\0';
}

同时

void foo(LPCSTR str) {
str[0] = '\0';
}

void foo(const char* str) {
str[0] = '\0';
}

没有。

在我的代码中实际上是 LPTSTR 所以 const 版本是 LPCTSTR...那么我是否可以通过使用类似 const LPTSTR 的东西来提高代码的可读性,或者它必须是 LPCTSTRconst TCHAR*

最佳答案

typedef“密封”了外部修改的类型。 LPSTR 是一个char *,句号。向其中添加 const(作为 const LPSTR)将 const 添加到外部:您得到一个 char * const .

您想要的是“注入(inject)”const(将其应用于指针对象,而不是指针),而这无法通过带有 typedef 的简单声明语法来实现。所以它必须是 LPCSTR,正是为此目的而创建的 typedef。

关于C++ 为什么 const LPSTR 与 const char * 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38220957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com