nginx - Langage C, compilateur VC CL, comment prendre en charge les variables sans avoir à les déclarer au début de la fonction
淡淡烟草味
淡淡烟草味 2017-05-16 17:26:29
0
3
968

Windows, utilisez le compilateur vc cl.exe pour compiler le module tiers de nginx, et il y a un message d'erreur similaire à ce code :

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;

L'erreur est 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

Après vérification, la raison est la suivante : le compilateur C nécessite que la déclaration de variable soit placée en tête d'un bloc fonctionnel, mais C++ n'a pas une telle exigence. Mettez simplement les trois variables déclarées au début de la fonction.

Le même code peut être compilé et passé sous gcc.

Veuillez me dire s'il existe des options de compilation dans vc qui peuvent prendre en charge un langage C plus avancé. Le compilateur vc que j'utilise est déjà celui fourni avec vs2012

淡淡烟草味
淡淡烟草味

répondre à tous(3)
为情所困

Pas question.
Parce que VC prend en charge la norme C89 même dans la dernière version de 2013, car il s'agit essentiellement d'un compilateur C++ et que la syntaxe dont vous avez besoin n'est prise en charge qu'après la norme C99, afin que GCC puisse compiler et transmettre.

Il existe deux solutions :
La première consiste à modifier le code pour se conformer à la norme C89.
2. Compilez avec mingw

刘奇

Ajoutez la commande de compilation

-c99

曾经蜡笔没有小新

Visual Studio 2012 ne prend pas en charge C99, contrairement à Visual Studio 2013.
Référence : Wikipédia C99

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!