如何指定在执行结束时执行一条指令?

时间:2018-12-10 12:54:23

标签: c order-of-execution

换句话说:
是否可以以某种方式延迟某个指令,例如var a = new Student(); a.fullName = a.firstName + ' ' + a.lastName,以便在执行结束时精确地执行该指令?

3 个答案:

答案 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()调用中指定的函数。

Live demo

输出可能是(不是从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.