директива препроцессора в то время как условие не работает

при попытке использовать переменную, определенную в директиве препроцессора:

  #define TIME_CONST 20;

в какое-то время

  while(i<TIME_CONST){...}

Я получаю сообщение об ошибке с жалобами на …

когда я использую:

  while(i<20)

все отлично работает

Что я делаю неправильно?

Заранее спасибо!

0

Решение

#define TIME_CONST 20;

Удалить ; с конца.

Потому что ;, следующие:

while(i<TIME_CONST){...}

становится так:

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

что не так, не так ли?

В C ++ (и C) макросы текст замена механизм, поэтому любое использование TIME_CONST будет заменен на 20; потому что так было определено.

Совет: как можно больше избегайте макросов . У вас есть лучшая альтернатива в C ++. использование const (или же constexpr ) чтобы определить ваш действительно постоянный объект:

const int TIME_CONST = 20;

Сейчас ; хорошо, на самом деле требуется по языку.

9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]