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 回答