C++ “的含义;静态声明“;Windows经典示例中的注释
有一个包含以下代码和注释的示例:C++ “的含义;静态声明“;Windows经典示例中的注释,c++,windows,winapi,declaration,C++,Windows,Winapi,Declaration,有一个包含以下代码和注释的示例: struct PROPERTYMAP { const PROPERTYKEY *pkey; // pointer type to enable static declaration PCWSTR pszXPathParent; PCWSTR pszValueNodeName; }; const PROPERTYMAP g_rgPROPERTYMAP[] = { { &PKEY_Title,
struct PROPERTYMAP
{
const PROPERTYKEY *pkey; // pointer type to enable static declaration
PCWSTR pszXPathParent;
PCWSTR pszValueNodeName;
};
const PROPERTYMAP g_rgPROPERTYMAP[] =
{
{ &PKEY_Title, L"Recipe", L"Title" },
{ &PKEY_Comment, L"Recipe", L"Comments" },
{ &PKEY_Author, L"Recipe/Background", L"Author" },
{ &PKEY_Keywords, L"Recipe/RecipeKeywords", L"Keyword" },
{ &PKEY_Microsoft_SampleRecipe_Difficulty, L"Recipe/RecipeInfo", L"Difficulty" },
};
有人知道“静态声明”是什么意思吗?感谢您提供的任何信息。它可能是指将
pkey
字段声明为PROPERTYKEY*
指针,而不是PROPERTYKEY
实例。如果将pkey
作为一个实例,则g_rgPROPERTYMAP
的声明将不能作为单个语句工作,因此不能用来初始化静态常量变量。为什么它不能作为一个语句使用?它是一个指针,所以您不必将该值复制到映射表中。@loop123123要成为一个语句,数组中所有元素的所有字段都必须一次性初始化。如果pkey
是constpropertykey
而不是constpropertykey*
,那么g_rgPROPERTYMAP
必须像={{pkey_Title,…},{pkey_Comment,…},}那样初始化代码>,这将要求编译器将每个PKEY
复制到数组中,这在静态变量初始化中实际上是不允许的(请参阅)。好的,如果我错了,请纠正我,但是执行const PROPERTYKEY
将进行编译,但映射必须在运行时而不是编译时初始化?