当我想编译 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/