1)有人可以解释以下内容吗?
void OnCreate(HWND hWnd, const LPCREATESTRUCT lpCreateStruct)
{
lpCreateStruct->x = 2; // this compiles
}
void OnCreate(HWND hWnd, const CREATESTRUCT * lpCreateStruct)
{
lpCreateStruct->x = 2; // this does not compile
}
2)通过指针或引用传递更快?或者相同?
答案 0 :(得分:5)
const LPCREATESTRUCT
扩展为CREATESTRUCT* const
,即指向非const结构的常量指针,而
const CREATESTRUCT*
是一个指向常量结构的非常量指针,因此编译器是正确的。
答案 1 :(得分:2)
为什么以下将2分配给x 什么时候是常量?
不应该,任何符合标准的编译器都会导致错误,因为ms
指向const my_structure
。
编辑:
根据您更新的案例,它是typedef如何工作的问题:
typedef T* TPtr;
void f(const TPtr);
void g(T* const);
void h(const T*);
f()
和g()
都是等效的,并且const
指向T
,而h()
指向const T
。