当我想使用 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);
}