我在这里遇到了一些问题,我弄乱了机器代码和函数指针,还有一点是我的代码,VC++只是拒绝编译。找不到我的语法错误,VC++说有一个
这编译,准确地按预期运行:
#include <stdlib.h>
#include <stdio.h>
int main()
{
char tarr[] = {0xb8, 222, 0, 0, 0, 0xc3};
int (*testfn)() = tarr;
printf("%d", testfn()); // prints 222
getchar();
}
但是,Visual C++快递不会编译如下,给这个错误:error C2143: syntax error : missing ';' before 'type'
#include <stdlib.h>
#include <stdio.h>
int main()
{
char* tarr = (char*) malloc(1000);
tarr[0] = 0xb8;
tarr[1] = 222;
tarr[2] = 0;
tarr[3] = 0;
tarr[4] = 0;
tarr[5] = 0xc3;
int (*testfn)() = tarr; // syntax error here
printf("%d", testfn());
getchar();
}
我已经看过了据说错误的代码,我看不出有什么问题。这是怎么回事?有什么我失踪?
with visual studio 2008第一个版本不编译: 错误C2440:'初始化':无法从'char [6]'转换为'int(__cdecl *)(void)' – sergiom 2010-02-12 12:57:04
@sergiom这很奇怪 - 第一个代码片段在VC++ 2008 Express中编译得很好 – 2010-02-12 13:06:21