2012-04-30 13 views
2

自分のプログラムで使用する必要があるerrno()の実装に関する混乱があります。異なるシステム上でのerrnoの位置

私が知る限り、標準のerrno()はerrno.hで定義されています。ただし、Visual Studioにはstdlib.hにerrno()もあります。たぶんそれは間違っていますが、私にとってstdlib.hのerrno()はerrno.hより速いです。しかし、errno()もstddef.hで定義されています。

どちらを使用すればよいですか? #ifdef _WIN32 #include <stdlib.h> #else #include <errno.h> #endif

+0

'errno()'とはどういう意味ですか?あなたは関数のように 'errno'を呼び出そうとしていますか? –

+0

Rob、 'errno'シンボルと' errno.h'ファイルの混乱を避けるために括弧をつけました。 – Triang3l

答えて

8

Cでは、errno.hを使用し、C++ではcerrnoヘッダーを使用してください。

errno便宜上他のヘッダに定義することができますが、移植性を最大限に高めるには上記のものを使用する必要があります。

+0

さて、別のシステムで最も速い実装は何ですか? – Triang3l

+4

@SiPlus:どうすればいいですか?それを測定して教えてください。 ; - ] – ildjarn

+1

'errno'は他のヘッダでは定義できません。そのような実装は間違っていて、壊れています。 –

0

Windowsについてはわかりませんが、Linux/Unixではerrnoerrno.hで定義されています。

関連する問題