I have spotted something in C header files what I can’t figure out what is for. For example in file bits/socket.h there is an enumeration type enum __socket_type, but after every enumerator there is a define macro which defines the same. Example:
enum __socket_type
{
SOCK_STREAM = 1,
#define SOCK_STREAM SOCK_STREAM
...
};
I have been unable to find out what this is for. Please enlighten me. I don’t even know how to form right question for querying google nor this site search box.
A prepreprocessor macro will never expand recursively, so what such a
#definedoes is leave the name in place whereever it is used. Such things are useful when you want to have a preprocessor feature test.can be used to conditionally compile some code afterwards.
Edit: So this combines the cleaner approach of enumerations (implicit values without collisions and scoping) with preprocessor tests.