预处理器指令在条件不起作用时

时间:2013-03-08 12:30:09

标签: c++ c preprocessor-directive

尝试使用预处理程序指令中定义的变量时:

  #define TIME_CONST 20;

在一段时间内:

  while(i<TIME_CONST){...}

我抱怨抱怨父母......

当我使用时:

  while(i<20)

一切正常。

我做错了什么?

提前谢谢!

1 个答案:

答案 0 :(得分:9)

#define TIME_CONST 20;

从最后删除;

由于;,以下内容:

while(i<TIME_CONST){...}

成为这个:

while(i< 20;){...}

这是错的,不是吗?

在C ++(和C)中,宏是文本替换机制,因此TIME_CONST的任何用法都将被20;替换,因为它是如何被定义的

建议:尽可能避免使用宏。你在C ++中有更好的选择。使用const(或constexpr)来定义真正的常量对象:

const int TIME_CONST = 20;

现在;很好,因为语言需要