Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Как написать бесконечное число
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
kodjan kodjan вне форума
Member
 
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.10.2005
По умолчанию Как написать бесконечное число - 13.04.2006, 23:30

У меня есть класс "бесконечное число", так вот нужно, чтобы в программе при попытке написать что-то подобное:
Код:
endless obj1("123123z43.34");
obj1="234.234$34";
(если наряду с цифрами содержатся лишние символы), компилятор выводил сообщение об ошибке... Тоесть не на стадии выполнения программы, а на стадии компиляции
Вроде как-то можно это сделать с помощью #error?
Ответить с цитированием
  (#2 (permalink)) Старый
nop nop вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.03.2004
По умолчанию Re: вопрос про #error - 13.04.2006, 23:42

Цитата:
Originally posted by kodjan
[b]У меня есть класс "бесконечное число", так вот нужно, чтобы в программе при попытке написать что-то подобное:
Код:
endless obj1("123123z43.34");
obj1="234.234$34";
(если наряду с цифрами содержатся лишние символы), компилятор выводил сообщение об ошибке... Тоесть не на стадии выполнения программы, а на стадии компиляции
Вроде как-то можно это сделать с помощью #error?
А откуда он знает что в строком литерале содержится именно число(твое) ? Даже если бы компилятор и мог анализировать строковые литералы, то как он должен поступать если параметр конструктора endless получен извне ?
Так как ты хочешь не получится.
Ответить с цитированием
  (#3 (permalink)) Старый
kodjan kodjan вне форума
Member
 
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.10.2005
По умолчанию 14.04.2006, 00:45

ну проблемма извне решается простым проходом по строке)
да, ступил, забыл же я, что это как строка рассматривается...
Просто хотелось чтобы было, как если напишем
Код:
int a=123Z;
и при компиляции вылезет ошибка... но моим мечтам не суждено сбыться)
Ответить с цитированием
  (#4 (permalink)) Старый
c++ c++ вне форума
Member
 
Сообщений: 962
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.12.2003
По умолчанию 14.04.2006, 15:17

Можно сделать такую проверку на этапе компиляции без #error.
Код:
#define MAKE_STRING_1(x) #x
#define MAKE_STRING(x) MAKE_STRING_1(x)
#define CHECK_NUMBER_AND_MAKE_STRING(x) ( (x) ?  MAKE_STRING(x) : MAKE_STRING(x) )
Далее твой код:
Код:
endless obj1(CHECK_NUMBER_AND_MAKE_STRING(123123z43.34));
obj1=CHECK_NUMBER_AND_MAKE_STRING(234.234$34);
При компиляции компилятор ругнется, если в последовательности встретится "ненужный" символ.
Вообще, можно убрать макрос MAKE_STRING_1(х) и сразу определить
Код:
#define MAKE_STRING(x) #x
Это будет работать под C/C++ компилятором M$ 7.1. Но люди мне говорили, что определять второй макрос нужно, т.к. некоторые компиляторы сокращенную версию компилировать не будут... Во всяком случае, так я видел в исходниках Linux Kernel.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бесконечное проигрывание видео в фоне страницы Lawilet DHTML, JavaScript, VBScript 1 09.10.2011 22:09
Бесконечное получение сетевого адреса чайничик Wi-Fi и сети 1 25.02.2011 17:17
Как написать задачу которая заданное число выводит на экран по истечению времени Alenka777 Вопросы начинающих программистов 2 22.10.2009 22:20
Как разбить определенное число на одинаковое количество что бы получилось тоже число Anonymous Вопросы начинающих программистов 26 28.05.2009 18:25
Подсчитать число и сумму положительных, число и произведение отрицательных элементов Svetik08 Visual Basic 4 19.02.2009 15:12
Число входящее в строку чисел наибольшее число раз vad0ss Prolog 0 18.11.2008 23:11
Написать макрос, который принимает любое число аргументов yamamoto Lisp 2 13.05.2008 11:04
Как написать штрих-код под VC++ имея какоето сгенирированное число Dimitri Visual C++ 5 08.06.2006 14:54
Написать функцию, заменяющую Y на число, равное глубине вложения Y в W ndn Lisp 2 24.10.2005 07:21
Дано двоичное число, получить десятичное число из него kochmonavt Pascal 1 20.12.2004 00:29
Даны числа X-число , Y-количество составить из X цифр Y число MiHanick Lisp 1 04.12.2004 15:48



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов