Использование #define в цикле while - PullRequest
0 голосов
/ 10 мая 2011

Я учусь программировать на 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 ]

7 голосов
/ 10 мая 2011

использование

#define NUM 3 целое число #define NUM = 3

5 голосов
/ 10 мая 2011

Вы используете #define для объявления макроса , который в некоторых случаях можно рассматривать как тип константы.

На самом деле происходит то, что компилятор заменяет любойвхождения вашего макроса с вашим текстом макроса.В вашем случае = 3.Это приводит к while(i < = 3), что является синтаксической ошибкой.

Правильный способ записи макроса:

#define NUM 3

Чтобы определить действительную константу, используйте ключевое слово const.

1 голос
/ 10 мая 2011

Научитесь использовать опцию только предварительной обработки ваших компиляторов, чтобы вы могли решить эти проблемы сами.

Е.Г.

% gcc -E foo.c > bar.c

Вы найдете строку 9, используя смещения из макроса директивы линии в bar.c, но она ясно показывает ваша ошибка:

while(i< = 3){
1 голос
/ 10 мая 2011

# определить NUM = 3
использовать

# определить NUM 3

0 голосов
/ 10 мая 2011
#define NUM = 3

должно быть

#define NUM 3
...