c++ - 编译 Zeus 时出现“具有 block 作用域的静态函数是非法的”错误

标签 c++ visual-studio visual-studio-2010

当我想编译 Z eus source code在带有 Visual Studio 2010 的 Windows 8 上,我收到此错误“具有 block 作用域的静态函数是非法的”,有什么方法可以强制编译器忽略此错误? (我的一个 friend 编译了这个源代码,没有对我当前的设置进行任何修改) [要首先编译源代码,您应该在“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;
}

最佳答案

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

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

关于c++ - 编译 Zeus 时出现“具有 block 作用域的静态函数是非法的”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38228590/

相关文章:

c++ - 修改程序入口点时未调用全局变量的构造函数

c++ - 切割圆的底部

c++ - 非公共(public)类型的公共(public)别名

visual-studio - 避免在 Visual Studio 的“导航到”(Ctrl+逗号) 框中看到同一事物的多个结果?

c# - 如何使用 INotifyPropertyChanged 更新列表框

c++ - ISAPI 和 Visual C++ 2010

c++ - 对符号 glTexImage2D 的 undefined reference

visual-studio - Visual Studio 部署项目 - 创建已部署可执行文件的快捷方式

wpf - 这是 Visual Studio 2010 IDE 的错误吗?

vb.net - 对于 Always On Top 选项,Visual Basic 代码是什么?