在while循环中使用#define

时间:2011-05-10 04:16:19

标签: c loops c-preprocessor

我正在学习如何在 C 中编程,但我无法弄清楚如何使用常量循环。我的理解是,在 C 中使用常量值的最佳方法是通过#define语句(如果我错了,请纠正我)。但它似乎没有起作用。

这是我的代码。

#include <stdio.h>

#define NUM = 3

void main(int argc, char *argv[]){

  int i=0;

  while(i<NUM){
    printf("foo ");
    i++;
  }

  return;
 }

当我尝试编译代码时,我收到以下错误。

  

helloWorld.c:在函数'main'中:
      helloWorld.c:9:错误:'='标记之前的预期表达式

(对于那些不想计算的人,第9行是while循环声明)。 如何使用预处理器函数执行此操作,这是在C中使用常量值的最佳方法吗?我可以使用'const'来使用它,但我认为这不是最好的。

5 个答案:

答案 0 :(得分:7)

使用

#define NUM 3代替#define NUM = 3

答案 1 :(得分:5)

您使用#define声明,在某些情况下您可以将其视为一种常量。

实际上,会发生什么是编译器用宏文本替换宏的任何出现。在您的情况下,= 3。这会导致while(i < = 3),这是语法错误。

编写宏的正确方法是:

#define NUM 3

要定义实常数,请使用const关键字。

答案 2 :(得分:1)

#define NUM = 3
使用

#define NUM 3

答案 3 :(得分:1)

了解如何使用您的编译器预处理选项,以便您可以解决这些问题 自己。

E.G。

% gcc -E foo.c > bar.c

您可以使用bar.c中行指令宏的偏移量找到第9行,但它显示清楚 你的错误:

while(i< = 3){

答案 4 :(得分:0)

#define NUM = 3

应该是

#define NUM 3