🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.os.msdos.djgpp
Article #2

Re: Declaring arrays inside generic function

#2
From: Pieter Kunst
Date: Tue, 28 Nov 1995 10:35
47 lines
2274 bytes
In article <Pine.A32.3.91.951127202934.29743A-100000@srv1.freenet.calgary.ab.ca> "Michael E. Wesolowski" <mewesolo@freenet.calgary.ab.ca> writes:
>I don't know if this is a problem with gcc, the DOS port of gcc, or 
>something (i.e., not a bug) in the implementation that I don't know 
>about. I'm using the DOS port of gcc (djgpp), v1.12m4. This is equivalent 
>ot gcc 2.6.3, if I remember correctly.
>
>I have a generic function which has as one of its input parameters an int 
>which identifies an array size. Within the function, I attempt to declare 
>an array of int's:
>
>int item_count [array_size];
>
>where array_size is the input parameter. When I look at the array in the 
>debugger (gdb) however, what i see is an array of int pointers (I think) 
>- something like int (*) [60000] (the 60000 is approximate). If I 
>explicitly declare the array as, for example, item_count [10], I get the 
>expected array of 10, uninitialized ints. SO, what's the problem?
>
>If it's something in the ANSI standard, I'd appreciate the paragraph 
>reference as well as a simple description of what's going on. Thanks.
>

If I understand you correctly, you're trying to do some sort of
dynamic allocation of an automatic array, e.g:

    void myfunc (int size)
    {
      int i, item[size];

      for (i=0; i<size; i++) item[i] = i;
    }

I don't think this is supported by ANSI C.
To obtain what you want, you can use malloc():

    void myfunc (int size)
    {
      int i, *item;

      item = (int *)malloc(size*sizeof(int));
      for (i=0; i<size; i++) item[i] = i;
      free (item);
    }

If you're programming in C++, you can use 'new' for this purpose.

Pieter Kunst (kunst@natlab.research.philips.com)
Technical Details
Message-ID: <DIr1Fq.Fqz@natlab.research.philips.com>
Path: arc1-ca.pugleaf.net!phcoms4.seri.philips.nl!newssvr!kunst
References: <Pine.A32.3.91.951127202934.29743A-100000@srv1.freenet.calgary.ab.ca>

Show Full Headers
Complete Article Headers
Newsgroups: comp.os.msdos.djgpp,comp.lang.c++
Path: arc1-ca.pugleaf.net!phcoms4.seri.philips.nl!newssvr!kunst
From: kunst@natlab.research.philips.com (Pieter Kunst)
Subject: Re: Declaring arrays inside generic function
Message-ID: <DIr1Fq.Fqz@natlab.research.philips.com>
Sender: news@natlab.research.philips.com (USENET News System)
Organization: Philips Research Laboratories, Eindhoven, The Netherlands
References: <Pine.A32.3.91.951127202934.29743A-100000@srv1.freenet.calgary.ab.ca>
Date: Tue, 28 Nov 1995 10:35:50 GMT