C语言,vc编译器cl,如何支持变量没必要在函数开始声明

windows,用vc编译器cl.exe,编译nginx的第三方模块,有相似这样的代码报错: static ngx_int_t ngx_http_zip_main_request_header_filter(ngx_http_request_t *r) {     ngx_http_variable_value_t  *vv;     ngx_http_zip_ctx_t         *ctx;     if ((ctx = ngx_http_get_module_ctx(r, ngx_http_zip_module)) != NULL)         return ngx_http_next_header_filter(r);     if ((vv = ngx_palloc(r->pool, sizeof(ngx_http_variable_value_t))) == NULL)         return NGX_ERROR;     /* Look for X-Archive-Files */     ngx_int_t variable_header_status = NGX_OK; 错误出在ngx_int_t variable_header_status = NGX_OK;: mod_zip/ngx_http_zip_module.c(195) : error C2275: 'ngx_int_t' : illegal use of t his type as an expression 查了一下,缘由:因为c的编译器要求将变量的声名放在一个函数块的头部,而c++没有这样的要求形成的。把声名的三个变量放到函数的开头就能够了。 一样的代码在gcc下是能够编译经过的。 请问vc有没有什么编译选项能够支持高级一点的C。我用的vc编译器已是vs2012自带的那个了 没有办法。 由于VC哪怕到最新的2013也支持C89标准,由于它本质上是个C++编译器,而你须要的语法是在C99标准后才支持的,因此GCC能编译经过。 解决办法有二: 一,就是把代码更改成符合C89标准。 二,使用mingw编译   编译命令里添加 -c99 Visual Studio 2012 不支持 C99,可是 Visual Studio 2013 支持。
相关文章
相关标签/搜索