代码之家  ›  专栏  ›  技术社区  ›  anonymous coward

找不到我的语法错误,VC++说有一个

  •  2
  • anonymous coward  · 技术社区  · 15 年前

    这将完全按照预期编译和运行:

    #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();
    }
    

    不会 根据此错误编译以下代码: 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();
    }
    

    我已经看过了假定存在错误的代码,但我看不出有任何错误。发生什么事?有什么我遗漏的吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Richard Pennington    15 年前

        2
  •  1
  •   Draemon    15 年前

    代码在GCC中编译时带有警告,但在G++中编译失败。你在那条线上少了一个演员。您还缺少来自main的返回值。

        int (*testfn)() = (int (*)()) tarr; // no more syntax error?