How to detect if errno_t is defined?

vividos picture vividos · Sep 23, 2009 · Viewed 17.6k times · Source

I'm compiling code using gcc that comes from Visual C++ 2008. The code is using errno_t, but in some versions of gcc headers including <errno.h> doesn't define the type. How do I detect if the type is defined? Is there a define that signals that the type was defined? In the case it isn't defined I'd like to provide the typedef to let the code compile correctly on all platforms.

Answer

alex tingle picture alex tingle · Sep 23, 2009

Microsoft's errno_t is redundant. errno is defined by the ISO C standard to be a modifiable lvalue of type int. If your code needs to store errno values, then you should put them into an int.

Do a global search and replace s/errno_t/int/ and you're done.

Edit: Also, you shouldn't be providing a typedef int errno_t in your code, because all names that end with _t are reserved.