在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
文件。我该如何解决这个问题?
答案 0 :(得分:9)
errno
必须是“可修改的左值”,不一定是声明的对象。
显然,在您的实现中,errno
会扩展为包含对名为__errno_location
的函数的调用的表达式。
在你自己的宣言中:
extern int errno;
errno
扩展为该表达式,从而导致错误。
由于<errno.h>
已经为您宣布errno
,因此无需自行声明,并且正如您所见,您无法自己声明。
只需省略extern
声明。