换句话说:
是否可以以某种方式延迟某个指令,例如var a = new Student();
a.fullName = a.firstName + ' ' + a.lastName
,以便在执行结束时精确地执行该指令?
答案 0 :(得分:3)
我写了一个atexit
用法示例:
#include <stdio.h>
#include <stdlib.h>
void foo(void) {
printf("\nDone!\n");
}
int main(void) {
atexit(foo);
for (;;) {
int tmp = rand() % 100; // unseeded
printf("%02d ", tmp);
if (!tmp) break;
}
return 0;
}
与往常一样,您应该检查atexit()
的返回值以检查错误。另外请注意,以_Exit()
终止程序或异常终止进程(例如:除以零)不会调用atexit()
调用中指定的函数。>
输出可能是(不是从ideone复制)
18 42 02 00 Done!
答案 1 :(得分:1)
C语言为此提供了atexit:
atexit-注册一个在正常进程终止时要调用的函数
答案 2 :(得分:1)
您要int atexit (void (*func)(void));
由
func
指向的函数将自动不带参数地调用 当程序正常终止时。
示例:
#include <stdio.h> /* puts */
#include <stdlib.h> /* atexit */
void fnExit1(void) {
puts("Exit function 1.");
}
void fnExit2(void) {
puts("Exit function 2.");
}
int main(void) {
atexit(fnExit1);
atexit(fnExit2);
puts("Main function.");
return 0;
}
输出:
Main function.
Exit function 2.
Exit function 1.