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

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте. Подскажите, пожалуйста, почему в таком случае некорректно использовать #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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2013, 17:43
Ответы с готовыми решениями:

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

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

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

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

3
127 / 125 / 16
Регистрация: 03.07.2011
Сообщений: 354
11.02.2013, 18:17 2
define - определяет имя(для препроцессора)
вначале кода пишите define, а в этом месте просто line. Посмотрите про работу препроцессора и разберитесь.
а вообще то что вы пытаетесь сделать - извращение)
0
7 / 7 / 1
Регистрация: 29.03.2011
Сообщений: 81
11.02.2013, 18:28 3
Вы видимо не понимаете, препроцессор обрабатывает ваш код перед компиляцией 1 раз и потому он вообще не знает что в тот момент(момент компиляции) будет в переменной kind... а значит ваш код не будет работать так как вы хотите, кроме случая когда kind это тоже число определенное #define'ом ранее.
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2013, 19:55
Помогаю со студенческими работами здесь

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

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

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

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

Объяснить, почему программа для подсчёта скобок в тексте работает не так, как ожидается
я ввожу текст в блокноте с скобками, мне нужно подсчитать количество скобок в программе, но у меня...

Нюансы работы с массивами: почему программа ведёт себя не так, как ожидается?
// ConsoleApplication20.cpp: определяет точку входа для консольного приложения. // #include...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru