#pragma start和#pragma exit的用例

时间:2017-06-15 07:17:39

标签: c++ c preprocessor pragma

  

#pragma startup #pragma exit :这些指令帮助我们指定在程序运行之前运行所需的函数   启动(在控件传递给main()之前)和程序之前   exit(就在控件从main()返回之前)。

有人能建议我使用这些预处理器指令的任何用例吗?

我担心这些在面向对象编程中的用例可能非常有限。有没有人发现它被用在一个项目中?

3 个答案:

答案 0 :(得分:2)

关于这些指令最重要的部分是能够为main之前/之后调用的函数分配优先级。这可以用来克服"static initialization order fiasco"。 第二个问题的答案:不,我还没有看到这些指令被用于实际应用程序。

答案 1 :(得分:0)

为了避免在评论中给出(甚至部分)答案,我提出了这个观点:

我在实时系统中看到过(C和汇编程序)代码,在main之前执行(实际上在crt之前/之后执行),当它执行的操作不能等待crt的(有时是冗长的)活动时。但是,“有龙”。

答案 2 :(得分:0)

恕我直言,遵循的编码指导方针应该指导这类决策。如果允许您使用特定编译器提供的这些扩展,那么您很高兴。但是,如果重点是编写标准代码,那么应该使用标准功能。

来自CPP参考的

Implementation defined behavior control是寻找标准支持的良好开端。

从C ++的角度来看,预处理器的使用根本不被认为是一种好的做法(尽管在某些情况下它是不可避免的)。它的使用保持最小化。然而,有些项目使用它,这是他们的决定。

根据个人经验,我从未在任何项目中使用/看过任何这些pragma