// a.h
#pragma once
typedef const wchar_t* LPCWSTR;
const LPCWSTR a[] = { L"asdfasdf" };
// a.cpp
#include "a.h"
// b.cpp
#include "a.h"
int main(){ return 0;}
这里因为 LPCWSTR 没有被当做一个指针,因此按照规则 const 可以前置也可以后置。如果按照前置理解,const const wchar_t* 是没有意义的,因此在 gcc-c++ 和 m$-c++ 里面都按后置理解,也就是 const wchar_t* const。如果编译器知道 LPCWSTR 是一个指针,那么按照规则就不能修改 const 的位置了,可惜编译器不关心。
周叶铨同学,好久没有你的消息了。