编译宙斯时'static functions with block scope are illegal'错误



当我想使用 Visual Studio 2010 在 Windows 8 上编译 Zeus 源代码时,我收到此错误"具有块范围的静态函数是非法的",有没有办法强制编译器忽略此错误?(我的一个朋友编译了这个源代码,没有对我目前的设置进行任何修改)[要首先编译源代码,您应该在"make/buildconfig.inc.php"文件中更改编译器的路径)[我是一名研究人员],这是我认为最简单的案例研究:

int main() {
    static int func1();   // C2267
}

这是函数

static bool unhookList(HANDLE process, HOOKWINAPI *list, DWORD count)
{
  bool ok = true; 
  for(DWORD i = 0; i < count; i++)if(list[i].originalFunction != NULL)
  {
    if(!WaHook::_unhook(process, list[i].functionForHook, list[i].originalFunction, list[i].originalFunctionSize))
    {
      ok = false;
#     if defined WDEBUG1
      WDEBUG1(WDDT_ERROR, "Failed to unhook WinApi at index %u", i);
#     endif
    }
    /*else
    {
      PeImage::_repalceImportFunction(coreData.modules.current, list[i].originalFunction, list[i].functionForHook);
      Core::replaceFunction(list[i].originalFunction, list[i].functionForHook);
    }*/
  }
  return ok;
}

C 和 C++ 中声明块范围内的函数是非法的。那么,你到底想做什么?如果你只想调用在其中一个 Zeus 标头中声明的函数 unhookList(),那么只需像这样调用它:

int main() {
    // parameter values are just for example
    bool result = unhookList(0, NULL, 1);
}

最新更新