将C代码转换为控制流程图时,是否需要考虑预处理器指令?
例如:
#define pi 3.14
在我看来,由于它们在运行时不会被处理,因此无需将它们视为命令。
答案 0 :(得分:1)
如here所述,正如您自己说的那样,预处理器不会更改运行时。每条指令都在程序编译之前执行,因此您无需在图形中考虑它们,因为每条预处理程序指令在运行时都是常量。
不过,您可以为宏设置一个例外,因为它定义了一些可以在运行时使用的行为,例如函数。
答案 1 :(得分:1)
对于控制流图而言,重要的是预处理器的输出。如果执行类似于#define woozle(x,y,z) (x() ? y() : z())
的操作,然后使用woozle(f1,f2,f3)
,则在绘制控制流图时,应该像对待(f1() ? f2() : f3())
一样对待它,而不考虑令牌的组合如何产生在预处理器的输出中表示。