Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Fireman2806
6 / 4 / 3
Регистрация: 15.10.2011
Сообщений: 44
1

#define работает не так, как ожидается

11.02.2013, 17:43. Просмотров 1064. Ответов 3
Метки нет (Все метки)

Здравствуйте. Подскажите, пожалуйста, почему в таком случае некорректно использовать #define:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
switch (kind)
  {
  case 1:
   #define line cur->firstname;
   break;
  case 2:
   #define line cur->lastname;
   break;
  case 3:
   #define line cur->date;
   break;
  case 4:
   #define line cur->phonenumber;
   break;
  default:
   cout << "You entered wrong number.";
   break;
  }
  for (int i = 0; i < k; i++)
  {
   if (line == key)  // Ошибка. 
   {
    getone(cur);
    fl = true;
    break;
   }
  }
C++
1
Вылезает ошибка: could not convert 'cur->stud::phonenumber' from 'std::string {aka std::basic_string<char>}' to 'bool'|
Если в помеченной комментарием строке заменить line на, например, строку cur->firstname, то всё будет работать, хотя по идее, после использования #define, line и должна сама заменяться препроцессором на cur->firstname, но этого, видимо не происходит.

Добавлено через 9 минут
Решил проблему. Под дефолтом прописал

C++
1
#define line "0"
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2013, 17:43
Ответы с готовыми решениями:

Условие в цикле do while работает не так, как ожидается
Проблема в условие цикла. Вот Код.// ConsoleApplication4.cpp: определяет точку входа для...

Почему цикл работает не так, как ожидается?
Двумя способами реализовал цикл, который увеличивает годовую зарплату на 10% при нажатии 'y' до тех...

Прочитать символы из файла, используя eof() (программа работает не так, как ожидается)
Здравствуйте, мне нужно прочитать символы из файла(желательно с пробелами). Использую eof(), но...

Пользовательская функция работает не так, как ожидается: найти причины странного поведения функции
Ребята помогите, пожалуйста. Создаю функцию суммы дробных чисел, но она ничего не возвращает, экран...

3
Venzo
125 / 123 / 16
Регистрация: 03.07.2011
Сообщений: 354
11.02.2013, 18:17 2
define - определяет имя(для препроцессора)
вначале кода пишите define, а в этом месте просто line. Посмотрите про работу препроцессора и разберитесь.
а вообще то что вы пытаетесь сделать - извращение)
0
Driim
7 / 7 / 1
Регистрация: 29.03.2011
Сообщений: 81
11.02.2013, 18:28 3
Вы видимо не понимаете, препроцессор обрабатывает ваш код перед компиляцией 1 раз и потому он вообще не знает что в тот момент(момент компиляции) будет в переменной kind... а значит ваш код не будет работать так как вы хотите, кроме случая когда kind это тоже число определенное #define'ом ранее.
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5129 / 1566 / 952
Регистрация: 23.01.2011
Сообщений: 3,192
Завершенные тесты: 1
11.02.2013, 19:55 4
Цитата Сообщение от Fireman2806 Посмотреть сообщение
C++
1
cout << "You entered wrong number.";
здесь так нужно
C++
1
cout << "ERROR 404!!! Brain not found!!!";
0
11.02.2013, 19:55
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 19:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Почему при вводе элементов массива, программа прекращает работу или работает не так, как ожидается?
При вводе элементов массива, программа прекращает работу или не правильно работает. Например если...

Почему malloc работает не так, как ожидается?
int main() { int* p =malloc(sizeof(int)); p=5; printf(&quot;%s\n&quot;,strerror(errno)); ...

ConstraintSet работает не так как ожидается в Handler
Делаю визуализацию сортировки. Сначала хочу реализовать swap. Два элемента подсвечиваются красным,...

Код работает не так, как ожидается (найти и исправить ошибки)
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; char deletika(char a, long ot, long...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.