typedef and #ifdef

F

F. Edward Boas

How can you check to see if a type is built-in or typedef'ed? For
example, an 8-bit integer could be u_int8_t, uint8_t, or unsigned
__int8, depending on the OS/compiler. I'd like to write code like:

#if defined(u_int8_t)
typedef u_int8_t BYTE;
#elif defined (uint8_t)
typedef uint8_t BYTE;
#elif defined (__int8)
typedef unsigned __int8 BYTE
#endif

However, this does not work, because built-in and typedef'ed types are
not "defined" according to #ifdef. So two questions: Is there a
work-around? And why doesn't C++ allow the above code?
 
A

Alf P. Steinbach

How can you check to see if a type is built-in or typedef'ed?

You can check whether a type is built-in by checking for all
built-in types (this list is not necessarily limited to the
C types); use template classes for this.

You cannot check whether a C++ type is a typedef, because a
C++ typedef just introduces an alternate _name_ for a type.

A typedef behaves differently in the language D.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top