gpt4 book ai didi

c++ - VS 2010 C++ IntelliSense "a storage class may not be specified here"即使它可以?

转载 作者:太空狗 更新时间:2023-10-29 20:30:40 26 4
gpt4 key购买 nike

这是一个相当小的问题,但让我很恼火:IntelliSense 似乎确信在 if 条件下声明静态变量 at the function-scope 是错误的, 并提示它。只有它构建得很好,甚至 MSDN 文档也提到它是一种合法用法。我真的很想摆脱红波浪线,因为它经常出现(它用在我经常使用的宏中)。

这里是代码,作为示例,尽管它不是我程序中的唯一示例:

MyForm::MyForm()
{
_VMESSAGE("Constructing '%s'/%p:%p @ <%p>",GetEditorID(),GetFormType(),formID,this);
if (static bool runonce = true)
{
// patch up vtbl
memaddr thisvtbl = (UInt32)memaddr::GetObjectVtbl(this);
_MESSAGE("Patching MyForm Form vtbl @ <%p>",thisvtbl);
gLog.Indent();
for (int i = 0; i < sizeof(Form_NoUseMethods)*0x8; i++)
{
if ((Form_NoUseMethods[i/0x20] >> (i%0x20)) & 1)
{
thisvtbl.SetVtblEntry(i*4,TESForm_vtbl.GetVtblEntry(i*4));
_VMESSAGE("Patched Offset 0x%04X",i*4);
}
}
gLog.Outdent();

runonce = false;
}
}

if (static bool runonce = true) 行中的 static_MESSAGE_VMESSAGE 的每次使用code>(使用类似的构造)被 IntelliSense 加下划线,并将鼠标悬停在任何读取“错误:此处可能未指定存储类”上。构建项目不会产生与这些行相关的错误。

最佳答案

VC++ 编译器允许它作为静默扩展(它不是合法的 C++),但 VC++ IntelliSense 引擎基于 EDG compiler frontend ,而不是 VC++ 编译器(去图)。因此,如果您担心编写可移植代码,则 IntelliSense 错误是正确的。

关于c++ - VS 2010 C++ IntelliSense "a storage class may not be specified here"即使它可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6193506/

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