Linux终端 - 错误:复合语句末尾的标签

Far*_*hat 6 c linux terminal gcc makefile

我通过VMware Player将x64 Ubuntu Linux用作虚拟机.作为我项目的一部分,我需要安装一些库(fec-3.0.1).我是Linux新手,不擅长编码.

以下是配置成功后我在终端遇到的错误:

    farhat@ubuntu:~/project/fatcaps_v0.5/fec-3.0.1$ make
    gcc -g -O2 -I. -Wall    -c -o dotprod.o dotprod.c
    dotprod.c: In function ‘freedp’:
    dotprod.c:56:3: error: label at end of compound statement
       default:
       ^
    make: *** [dotprod.o] Error 1
Run Code Online (Sandbox Code Playgroud)

这是函数'freedp'的内容(起始行是55):

    /* Free a dot product descriptor created earlier */
    void freedp(void *p){
      switch(Cpu_mode){
      case PORT:
      default:
    #ifdef __i386__
      case MMX:
      case SSE:
        return freedp_mmx(p);
      case SSE2:
        return freedp_sse2(p);
    #endif
    #ifdef __VEC__
      case ALTIVEC:
        return freedp_av(p);
    #endif
      }
    }
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

zhb*_*zhb 15

您遇到错误的原因label at end of compound statement是因为default案例不能为空,这意味着您必须提供一个break;空的语句.

编辑:我找到了关于该主题的一些材料,我得到了:https://mail.gnome.org/archives/evolution-patches/2004-April/msg00235.html,这是关于编译器gcc3.4的问题,在default没有语句的情况下报告错误,并且它在gcc3.3上发出警告,但现在,我在gcc4.8.2上测试,它没事....