我在这里遇到了一些问题,我正在搞乱机器代码和函数指针,并且 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++ Expresswill not编译以下内容,出现此错误: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();
}
我查看了所谓的错误代码,但看不出有什么问题。这是怎么回事?我有什么遗漏的吗?
这是C代码吗?如果是这样,并且它不是 C99,那么您需要将 testfd 的声明移至 tarr[X] 的赋值之前。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)