我有一个C ++程序,我想在其中编译std :: exit并使用自己的程序,即通过:
-Dexit=myExit
但是,我遇到了这个问题:
In file included from /usr/include/c++/7/ext/string_conversions.h:41:0,
from /usr/include/c++/7/bits/basic_string.h:6352,
from /usr/include/c++/7/string:52,
from /usr/include/c++/7/bits/locale_classes.h:40,
from /usr/include/c++/7/bits/ios_base.h:41,
from /usr/include/c++/7/ios:42,
from /usr/include/c++/7/istream:38,
from /usr/include/c++/7/sstream:38,
from tests/helpers.h:4,
from tests/helpers.cpp:1:
/usr/include/c++/7/cstdlib:146:11: error: ‘::exit’ has not been declared
using ::exit;
我正在virtualBox上运行它:Ubuntu 18.04 / 18.10 / Debian 10
答案 0 :(得分:1)
您可以使用exit
注册自己的要在程序退出时执行的功能,而不是自己重写atexit
(这是不标准的且有风险的)。
atexit
使用一个函数指针参数(void (*func)(void))
,并注册要由exit
执行的功能(有关参考,请参见glibc exit.c source code)。
使用这种方法,您可以注册要在退出时执行的多个函数,此外,atexit
行为在C ++标准中已得到很好的定义。
有关示例和文档,请参见: