[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tinycc-devel] Tinycc issues

From: Dominic Mazzoni
Subject: Re: [Tinycc-devel] Tinycc issues
Date: Tue, 15 Mar 2005 16:05:20 -0800
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040616

Neil Bradley wrote:
2. Forward-declare arrays:
  With gcc, I am allowed to forward-declare an array of unspecified size,
  and then actually specify the size (implicitly) later in the code.  For
    int g_primes[];
    int g_primes[] = {2, 3, 5, 7, 11, 13, 17, 23};

Why would one do this?

Simple example: I want to define the array in a header file, but initialize it in a C file. I don't want to prespecify the number of elements in the array because it's something that changes often, and I want to be able to change it without recompiling any other C files.

Actual example: here's something closer to the code I was actually dealing with - simplified for this example, of course, but note that g_functions is referenced by one of the functions that appears in its own declaration. Ideally I'd like to be able to add a new function to my list without having to remember to add one to a constant NUM_FUNCTIONS or something like that.

- Dominic

typedef struct {
  char      *name;
  eval_fn_t  eval_f;
} function_t;

function_t g_functions[];

float sin_eval(float x, char *unused)
  return sin(x);

float cos_eval(float x, char *unused)
  return cos(x);

float negate_eval(float x, char *fn)
  int i;
    if (!strcmp(g_functions[i].name, fn))
      return -(*g_functions[i].eval_f)(x);
  return NAN;

function_t g_functions[] = {
   {"sin", sin_eval},
   {"cos", cos_eval},
   {"negate", negate_eval},


------------------------------------------------------------------------------- Neil Bradley "I've got a fever and the only prescription is MORE
Synthcom Systems, Inc.    COWBELL!!!"

Tinycc-devel mailing list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]