2011-09-16 7 views
1

廃止予定の廃止予定のsys_errlistおよびsys_nerrが廃止された古いコードを変更しています。誰かが私の交換を教えてもらえますか?エラー処理で廃止予定の配列の置き換えが必要

誰かがその機能について教えてくれれば、それは素晴らしいことでしょう。ここで

はコードです:

37 static const char * 
38 stringErrorReport(void) 
39 { 
40 #if (defined(sgi)) 
41   return strerror(oserror()); 
42 #elif (defined(_AIX)) 
43   return strerror(errno); 
44 #else 
45   if (errno > 0 && errno < sys_nerr) 
46     return sys_errlist[errno]; 
47   else 
48     return "Unknown error.\n"; 
49 #endif 
50 } 

は、この関数は、()はstrerrorのラッパーで、システムにそれ自身の交換を供給しようとすると、私は非推奨sys_nerrsys_errlist[ ]

答えて

1

を交換する方法を教えてくださいstrerror()が利用できないと仮定しています。 sys_errlistとsys_nerrでも利用できない場合は、失敗します。しかし、少なくともそれを試してみました...

+0

あなたはそれを交換することをお勧めしますか? – kingsmasher1

+0

特に 'errno> 0 && errno kingsmasher1

+0

これは文字列の配列(errno.hの定数のテキスト表現)です。存在しても存在しなくてもかまいません。システムヘッダファイルは、宣言を公開してもしなくてもよい。あなたのシステムがライブラリにstrerror()を持っているなら、このテーブルはどこかに格納されます。それはあなたに似ているかもしれません。 (ただし、ループ内からstrerror()を呼び出すことでいつでも問い合わせることができます。これはむしろ愚かです)明らかに、識別子sys_nerr(テーブルサイズ)がプログラムに見えない場合は、テストすることはできません。 – wildplasser

関連する問題