djm408@tijc02.UUCP (David Marks ) (12/09/88)
Does anyone know how to determine the data type of a variable at runtime? I am trying to write some code that will convert the value of a variable to string without knowing a priori its data type. The function will be passed a pointer to the variable. How can this function determine the variable's data type. The only thing I DO know is that this variable will never be a structure or a union; it CAN be any numeric (including float and double) or character (including string) type; Please send e-mail and I will summarize to the net. #include <standard/disclaimer.h> | LIFE IS NOT A MALFUNCTION! - Number 5 ____ ___ _ _ __ ____ ____ _ _ ___ ___ _ _ ____ / / / / | / / / / / //// / / / / / / /___ / / /--/ |/ / / / / / / / /--/ /--\ / \ / ~~~~ ~ ~ ~ ~~ ~~~~ ~~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~~~ PONY EXPRESS: David J. Marks M/S 3520, Texas Instruments, Erwin Highway P. O. Drawer 1255, Johnson City, TN. 37605 ELECTRIC AVENUE: ...!mcnc!rti!tijc02!djm408 MA BELL: 615-461-2074
barmar@think.COM (Barry Margolin) (12/10/88)
In article <293@tijc02.UUCP> djm408@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@think.com {uunet,harvard}!think!barmar