6

Linux で C++ プログラムをコンパイルするプロセス中に、次の警告が表示されます。

warning #584: omission of exception specification is incompatible with previous function "__errno_location" (declared at line 43 of "/usr/include/bits/errno.h")
extern int errno;//error handling
         ^

コードを以下に示します。

#include <errno.h>    //for error handling
#include <cmath>
#include <cstring>
#include <ctime>

extern int errno;//error handling

errnoはグローバル変数で、他の.cppファイルで使用されます。どうすればこれを解決できますか?

4

1 に答える 1

12

errno「変更可能な左辺値」である必要があり、必ずしも宣言されたオブジェクトである必要はありません。

どうやらあなたの実装でerrnoは、 という関数への呼び出しを含む式に展開されます__errno_location

あなた自身の宣言で:

extern int errno;

errnoその式に展開され、エラーになります。

<errno.h> すでに宣言されているためerrno、自分で宣言する必要はありません。また、ご覧のとおり、自分で宣言することはできません

externその宣言を省略してください。

于 2013-10-17T03:20:31.477 に答える