c/c++语言开发共享C中的错误消息

我在编译C应用程序时遇到问题,显示的错误毫无意义。 我不知道从哪里开始寻找解决方案。

这是代码:

static char* FilterCreate( void* arg, const char* const* key_array, const size_t* key_length_array, int num_keys, size_t* filter_length) { *filter_length = 4; char* result = malloc(4); // error: error C2143: syntax error : missing ';' before 'type' C:Projectsmyleveldbdbc_test.c memcpy(result, "fake", 4); return result; } 

这是全屏截图: C中的错误消息

什么可能导致这样的错误?

    您正在使用C89 / 90编译器编译C代码。

    在经典C(C89 / 90)中,在块的中间声明变量是违法的。 必须在块的开头声明所有变量。

    一旦你开始编写语句 ,比如*filter_length = 4 ,就意味着你完成了声明 。 您不再被允许在此块中引入变量声明。 将您的声明移到更高位置并编译代码。


    在C语言中, 声明不是语句 (与C ++相反, 声明只是一种语句forms)。 在C89 / 90中,复合语句的语法是:

     compound-statement: { declaration-list[opt] statement-list[opt] } 

    这意味着所有声明必须首先出现在块的开头。

    请注意,在C99声明中也不是语句。 但复合语句的语法已更改为:

     compound-statement: { block-item-list[opt] } block-item-list: block-item block-item-list block-item block-item: declaration statement 

    这就是为什么你可以在C99中交错声明和语句。

      以上就是c/c++开发分享C中的错误消息相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      www.ctvol.com true Article c/c++语言开发共享C中的错误消息

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/562249.html

      (0)
      上一篇 2021年2月4日 下午5:38
      下一篇 2021年2月4日 下午5:40

      精彩推荐