Data types at run time

Barry Margolin barmar at think.COM
Sat Dec 10 08:56:41 AEST 1988


In article <293 at tijc02.UUCP> djm408 at tijc02.UUCP (David Marks         ) writes:
>Does anyone know how to determine the data type of a variable at runtime?

There's no built-in way in C to do this, so you'll have to implement
it yourself.

One way to implement it would be to pass a second argument to the
function that accepts the pointer.  This argument should be an
indicator of the type (it should probably be an enum).

A variant would be to pass a struct instead of the pointer, something
like:

struct {
  enum {type_int, type_char, ...} type;
  union {int, char, ...} *ptr;
  } argument;

Your routine can then contain
  switch (argument.type) {
    case type_int: ...
    case type_char: ...
    ...
  }

Barry Margolin
Thinking Machines Corp.

barmar at think.com
{uunet,harvard}!think!barmar



More information about the Comp.lang.c mailing list