国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

nginx - C語言,vc編譯器cl,如何支持變量不必在函數(shù)開始聲明
淡淡煙草味
淡淡煙草味 2017-05-16 17:26:29
0
3
1127

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的編譯器要求將變量的聲名放在一個函數(shù)塊的頭部,而c++沒有這樣的要求造成的。把聲名的三個變量放到函數(shù)的開頭就可以了。

同樣的代碼在gcc下是可以編譯通過的。

請問vc有沒有什么編譯選項可以支持高級一點的C。我用的vc編譯器已經(jīng)是vs2012自帶的那個了

淡淡煙草味
淡淡煙草味

全部回復(fù)(3)
為情所困

沒有辦法。
因為VC哪怕到最新的2013也支持C89標(biāo)準(zhǔn),因為它本質(zhì)上是個C++編譯器,而你需要的語法是在C99標(biāo)準(zhǔn)后才支持的,所以GCC能編譯通過。

解決辦法有二:
一,就是把代碼更改為符合C89標(biāo)準(zhǔn)。
二,使用mingw編譯

劉奇

編譯命令里添加

-c99

曾經(jīng)蠟筆沒有小新

Visual Studio 2012 不支持 C99,但是 Visual Studio 2013 支持。
參考:C99 維基百科

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板