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

时间:2019-04-03 14:20:56

标签: c graph controls preprocessor flow

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

例如:

#define pi 3.14

在我看来,由于它们在运行时不会被处理,因此无需将它们视为命令。

2 个答案:

答案 0 :(得分:1)

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

不过,您可以为宏设置一个例外,因为它定义了一些可以在运行时使用的行为,例如函数。

答案 1 :(得分:1)

对于控制流图而言,重要的是预处理器的输出。如果执行类似于#define woozle(x,y,z) (x() ? y() : z())的操作,然后使用woozle(f1,f2,f3),则在绘制控制流图时,应该像对待(f1() ? f2() : f3())一样对待它,而不考虑令牌的组合如何产生在预处理器的输出中表示。