C : stack memory, goto and “jump into scope of identifier with variably modified type”,

后端 未结 3 669
别那么骄傲
别那么骄傲 2020-12-07 00:36

I found that this refuses to compile :

int test_alloc_stack(int size){
    if(0) goto error; // same issue whatever conditional is used
    int apply[size];
         


        
3条回答
  •  [愿得一人]
    2020-12-07 00:56

    Your goto makes you skip the line that allocates apply (at runtime).

    You can solve the problem in one of four ways:

    1: Rewrite your code so you don't use goto.

    2: Move the declaration of apply to before the goto.

    3: Change the scope so that error: is outside the scope of apply:

    int test_alloc_stack(int size){
        if(0) goto error; // same issue whatever conditional is used
        {
            int apply[size];
            give_values(apply,size);
            return 1;
        }
        error:
            return 0;
    }
    

    4: Change the variable declaration so its size can be determined at compile-time.

提交回复
热议问题