【发布时间】:2010-02-12 12:50:27
【问题描述】:
我在这里遇到了一点问题,我在搞乱机器代码和函数指针,而我的一些代码 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++ Express 不会编译以下代码,并给出以下错误: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();
}
我查看了所谓的错误代码,但我看不出它有什么问题。这是怎么回事?我有什么遗漏吗?
【问题讨论】:
-
使用 Visual Studio 2008 第一个版本无法编译:错误 C2440:'initializing':无法从 'char [6]' 转换为 'int (__cdecl *)(void)'
-
@sergiom 这很奇怪 - 第一个 sn-p 在 VC++ 2008 Express 中对我来说编译得很好
标签: c visual-c++ function-pointers syntax-error