I'm porting some code to Windows, and the Microsoft compiler (Visual C++ 8) is telling me that strerror()
is unsafe.
Putting aside the annoyance factor in all the safe string stuff from Microsoft, I can actually see that some of the deprecated functions are dangerous. But I can't understand what could be wrong with strerror()
. It takes a code (int
), and returns the corresponding string, or the empty string if that code is not known.
Where is the danger?
Is there a good alternative in C?
Is there a good alternative in C++?
[edit]
Having had some good answers, and now understanding that some implementations may be crazy enough to actually write to a common shared buffer - unsafe to reentrancy within a single-thread, never mind between threads! - my question stops being "Why can't I use it, and what are the alternatives?" to "Are there any decent, succinct alternatives in C and/or C++?"
Thanks in advance
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…