我在这里遇到了一个问题,我在弄乱机器代码和函数指针,并且我的代码中有一些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();
}

我查看了据认为是错误的代码,但看不到任何错误。这是怎么回事?有什么我想念的吗?

最佳答案

这是C代码吗?如果是这样,并且不是C99,则需要在分配给tarr [X]之前将testfd的声明移至。

关于c - 找不到我的语法错误,VC++说有一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2251859/

10-11 00:46