[vox-tech] strerror deprecated?
Jeff Newmiller
jdnewmil at dcn.davis.ca.us
Tue Dec 26 20:12:25 PST 2006
Peter Jay Salzman wrote:
> Hi all,
>
> Trying to write portable/correct code between Linux and MS Visual C++.
>
> The cl.exe compiler is telling me that "strerror() is deprecated". Is that
> true? I never heard such a thing. Tried Googling and couldn't find any
> mention of strerror() being deprecated.
>
> The compiler also told me that strerror() was unsafe. After thinking about
> it for a second, I'm guessing it meant "thread unsafe".
>
> Lastly, the compiler told me that I should use strerror_s() which is more
> safe. I looked at the prototype for this function and it requires a buffer,
> the buffer's length, and the errno. Passing a char * to be filled by a
> function when you don't know how large of a buffer that function wants
> hardly sounds like a good idea. How should this function be used safely?
> Keep allocating memory until the buffer isn't filled all the way? Sounds
> like I would need to write my own strerror function just to make sure the
> buffer is large enough. Why would a standards committee do such a thing?
>
> Lastly, strerror_s doesn't appear in any man pages on my Linux system.
> However, it does appear to be similar to strerror_r() which my man pages say
> is POSIX compliant (under a suitable #define).
>
> What's the quickest fastest way of using strerror_r if on Linux and
> strerror_s if on Windows?
>
> Thanks,
> Peter
>
One solution I have not heard mentioned today: don't use strerror at all.
The few times I have used it in twenty years of programming, it
has been for programs I did not plan on distributing anyway.
Normally, I try to handle all defined errors in a manner appropriate
to the context. For example, in an embedded system errors may be
reported through LEDs, and ENOMEM is pretty useless information
to the typical user of such a tool. In reality, errno is pretty
useless information to users in most contexts... it is really
debugging information, and incomplete for that purpose as well.
--
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go Live...
DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...1k
---------------------------------------------------------------------------
More information about the vox-tech
mailing list