我是否必须在控制流图中考虑预处理程序指令?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是否必须在控制流图中考虑预处理程序指令?相关的知识,希望对你有一定的参考价值。

将C代码转换为控制流图时,是否必须考虑预处理程序指令?

例如:

#define pi 3.14

从我的角度来看,没有必要将它们视为命令,因为它们在运行时没有被处理。

答案

正如here所说,正如你自己所说,预处理器不会改变运行时。每个指令都是在编译程序之前执行的,因此您不需要在图中考虑它们,因为每个预处理程序指令在运行时都是常量。

但是,您可以为宏做一个例外,因为它定义了一些可以在运行时使用的行为,比如函数。

另一答案

对于控制流图而言重要的是预处理器的输出。如果一个人执行类似#define woozle(x,y,z) (x() ? y() : z())的事情,然后使用woozle(f1,f2,f3)然后在绘制控制流图时,应该将其视为(f1() ? f2() : f3()),而不考虑如何在预处理器的输出中表示该令牌的组合。

以上是关于我是否必须在控制流图中考虑预处理程序指令?的主要内容,如果未能解决你的问题,请参考以下文章

CSAPP:异常控制流

代码覆盖率是个啥概念?

代码覆盖率是个啥概念?

20165232 第七周学习总结

2018-2019-1 20165320 《信息安全系统设计基础》第七周学习总结

Kotlin语法基础,控制流