UVM——宏终极分析

发布时间 2023-06-15 15:11:57作者: superego_zhang

  这里先撇开UVM中宏的分析,先来看看C++中对宏的分析

  #define ASPECT_RATIO 1.653 

  记号名称ASPECT_RATIO也许从未被编译器看见;也许在编译器开始处理源码之前它就被预处理器移走了。于是记号名称ASPECT_RATIO有可能没进入记号表内。

  当你运用此常量但获得一个编译错误信息时,这个错误信息也许会提到1.653而不是ASPECT_RATIO。如果ASPECT_RATIO被定义在一个非你所写的头文件内,你肯定对1.653以及它来自何处毫无概念,于是你将因为追踪它而浪费时间。

  解决办法:以一个常量来替换该宏:

  const double AspectRatio = 1.653;

  AspectRatio作为语言常量,AspectRatio肯定会被编译器看到。此外对浮点常量而言,使用常量可能比使用#define导致较小的码,因为预处理器“盲目地将宏名称ASPECT_RATIO替换为1.653”可能导致目标码出现多份1.653,而使用常量AspectRatio绝不会出现该情况。