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

问题描述 投票:3回答:2

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

例如:

#define pi 3.14

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

c graph controls preprocessor flow
2个回答
1
投票

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

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.