Здравствуйте, ecco, Вы писали:
E>Это он не заценил. Кстати, у них ведь есть аналоги ++ и --: функции inc() и, если не ошибаюсь, dec()...
Ага, аналоги, типа while( Dec( i ) ) можно написать
Re[4]: Регистронезависимый C++
От:
Аноним
Дата:
24.05.05 17:42
Оценка:
Здравствуйте, Nazik, Вы писали:
N>Теперь вспомни комбинаторику и посчитай какого размера будет этот "ашничек". Как бы компилятор у тебя не подавился!!!
предлагаю такой вариант — проект писать с использованием этого хидера,
заказчикам отдавать без него
Здравствуйте, ecco, Вы писали:
E>Здравствуйте, AlexEagle, Вы писали:
AE>>а про +=, ++, *= и проч он не мечтает? я уже молчу про результат операции
E>Это он не заценил. Кстати, у них ведь есть аналоги ++ и --: функции inc() и, если не ошибаюсь, dec()...
E>А насчёт += и т.п.: не все ЦПП программеры их везде используют вместо i = i + ...; (есть примеры). Иногда эти операторы такие глюки делают, что не сразу врубисся, так вот!
inc() и dec() — это, как справедливо отмечено, не операторы, а ФУНКЦИИ (подпрограммы) со всеми вытекающими накладнами расходами.
Я понимаю, есть всякие птимизующие компиляторы, но насколько я заню, дельфино к ним не относится.
Здравствуйте, _ks_, Вы писали:
E>>А насчёт += и т.п.: не все ЦПП программеры их везде используют вместо i = i + ...; (есть примеры). Иногда эти операторы такие глюки делают, что не сразу врубисся, так вот! __>Это не операторы глюки делают. А кое-кто другой.
Здравствуйте, Dmi3S, Вы писали:
DS>Здравствуйте, Аноним, Вы писали:
А>>Как вы думаете имеет ли какое-либо практическое применение такой ашничек:
А>>#define a A А>>#define b B А>>#define c C
DS>Есть вариант чуть лучше: DS>
DS>#define i j
DS>// I whish You happy debugging
DS>
ага, и вписать это в precompiled headers в какой-нибудь крупный проект — пусть твои последователи разбираются.
100% что никто ничего менять не будет, просто будут про это "помнить"
Здравствуйте, Слава Шевцов, Вы писали:
СШ>Ну почему чуть что — сразу программист?
все та же статистика...
Правда когда я программировал на реализации с++ в CA Visual Objects, там статистика была в пользу программиста, что приводило к тому что порой все ошибки просто списывались на среду разработки
Здравствуйте, moudrick, Вы писали:
M>inc() и dec() — это, как справедливо отмечено, не операторы, а ФУНКЦИИ (подпрограммы) со всеми вытекающими накладнами расходами.
выглядят как функции, определены в System, так что практически встроены в язык. В связи с последним допустимо, думаю, считать операторами.
M>Я понимаю, есть всякие птимизующие компиляторы, но насколько я заню, дельфино к ним не относится.
слишком ты критичен к делфи, скорее предубежден . Никаких накладных расходов:
inc(1) есть просто inc eax, 1 к примеру (ну и где тут накладные расходы)
посмотри на генерируемый код для инструкции case, разве там плохая оптимизация?
... << RSDN@Home 1.1.4 beta 7 rev. 454>>
Мне твоя Москва нравится, и обратно в Россию я не вернусь! (с) мыльная о.
Здравствуйте, llirik, Вы писали: L>выглядят как функции, определены в System, так что практически встроены в язык. В связи с последним допустимо, думаю, считать операторами.
Более точно этот раздел называется functions requiring compiler magic
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
M>>inc() и dec() — это, как справедливо отмечено, не операторы, а ФУНКЦИИ (подпрограммы) V>А в чем разница?
Не функции а процедуры (которые войд) -- они значение не возвращают.
Поэтому при написании while ( dec(i) ) — начнется ругань -- типа тип выражения д.б. boolean.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Dmi3S, Вы писали:
DS>>Здравствуйте, Аноним, Вы писали:
А>>>Как вы думаете имеет ли какое-либо практическое применение такой ашничек:
А>>>#define a A А>>>#define b B А>>>#define c C
DS>>Есть вариант чуть лучше: DS>>
DS>>#define i j
DS>>// I whish You happy debugging
DS>>
А>ага, и вписать это в precompiled headers в какой-нибудь крупный проект — пусть твои последователи разбираются.
А>100% что никто ничего менять не будет, просто будут про это "помнить" А>
Есть предложение:
#ifdef _DEBUG
#define i j
#else
#define j i
#endif
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Nazik, Вы писали:
N>>Теперь вспомни комбинаторику и посчитай какого размера будет этот "ашничек". Как бы компилятор у тебя не подавился!!!
А>предлагаю такой вариант — проект писать с использованием этого хидера, А>заказчикам отдавать без него
А>типа, обфускатор
Какой-такой обфускатор ? Лечится скриптом из 2х строк.
Здравствуйте, tinytjan, Вы писали:
T>Здравствуйте, Vamp, Вы писали:
M>>>inc() и dec() — это, как справедливо отмечено, не операторы, а ФУНКЦИИ (подпрограммы) V>>А в чем разница?
T>Не функции а процедуры (которые войд) -- они значение не возвращают.
К сожалению это справедливо для всех небулевых операторов паскаля Поэтому в данном случае разница между dec и оператором чисто формальная (операторы как правило обозначаются небуквами, ну кроме is, in, and, not и проч)
Здравствуйте, Nazik, Вы писали:
N>Теперь вспомни комбинаторику и посчитай какого размера будет этот "ашничек". Как бы компилятор у тебя не подавился!!!
{...}
От себя добавлю
Если в коде будет хотябы одна переменная длиной 20, то
количество вариантов ее записи будет равно 2^20
длина строки определения
#define Abcdefghijklmnopqrst abcdefghijklmnopqrst равна 50 символов
Соответственно при описании в ашке только этой переменной ашка выйдет больше чем 50 метров!!!!
Здравствуйте, ecco, Вы писали:
E>Есть предложение: E>
E>#ifdef _DEBUG
E>#define i j
E>#else
E>#define j i
E>#endif
E>
Вот это талант, вот это полет мысли, гигант ! Уважаю
Но для тех кто хочет добиться регистронезависимости на с++ могу предложить CA Visual Objects.... там кстати вышеописанный код дефайнов и много другого прекрасного, рандомного уже встроены в систему
как советует мой коллега, на линуксе в компайлер с++ можно добавить UPPERCASE при синтаксическом разборе — вот тут уж что-то да получится
Здравствуйте, tinytjan, Вы писали:
T>Здравствуйте, Vamp, Вы писали:
M>>>inc() и dec() — это, как справедливо отмечено, не операторы, а ФУНКЦИИ (подпрограммы) V>>А в чем разница?
T>Не функции а процедуры (которые войд) -- они значение не возвращают. T>Поэтому при написании while ( dec(i) ) — начнется ругань -- типа тип выражения д.б. boolean.
Да? Тогда все даже хуже, чем я думал...
Компайцлер magic — хорошо. Нет накладных расходов.
Но... значение то в регистре можно вернуть для дальнейшего использования в большом выражении.
Да и тогда полного счастья все равно не будет.
Ибо для использования в выражении в С есть префиксная форма и постфиксная.
Здравствуйте, moudrick, Вы писали:
M>Здравствуйте, tinytjan, Вы писали:
T>>Здравствуйте, Vamp, Вы писали:
M>>>>inc() и dec() — это, как справедливо отмечено, не операторы, а ФУНКЦИИ (подпрограммы) V>>>А в чем разница?
T>>Не функции а процедуры (которые войд) -- они значение не возвращают. T>>Поэтому при написании while ( dec(i) ) — начнется ругань -- типа тип выражения д.б. boolean.
M>Да? Тогда все даже хуже, чем я думал... M>Компайцлер magic — хорошо. Нет накладных расходов. M>Но... значение то в регистре можно вернуть для дальнейшего использования в большом выражении.
M>Да и тогда полного счастья все равно не будет. M>Ибо для использования в выражении в С есть префиксная форма и постфиксная.
И тем не менее я не знаю кода написанного на c++, который нельзя былобы написать на Делфи. Только с бОльшими трудозатратами.
Поправьте если я неправ.
З.Ы. Не перерастет ли это в очередную священную войну?
Здравствуйте, tinytjan, Вы писали:
T>И тем не менее я не знаю кода написанного на c++, который нельзя былобы написать на Делфи. Только с бОльшими трудозатратами. T>Поправьте если я неправ.
Дальше лучше — я не знаю такого кода на с++ который нельзя было бы переписать на асме (вариант, на машинных кодах ). Про трудозатраты молчу.
Но ведь в чем преимущество — в низких трдозатратах и в гибкости используемого инструментария для выбранной задачи... Именно поэтому разные задачи решают разными инструментальными средствами
T>З.Ы. Не перерастет ли это в очередную священную войну?
Там и так мусора хватает... А из юмора по-моему еще никто не уходил
Здравствуйте, tinytjan, Вы писали:
T>Здравствуйте, Nazik, Вы писали:
N>>Теперь вспомни комбинаторику и посчитай какого размера будет этот "ашничек". Как бы компилятор у тебя не подавился!!! T>{...}
T>От себя добавлю T>Если в коде будет хотябы одна переменная длиной 20, то T>количество вариантов ее записи будет равно 2^20
Что то не так с комбинаторикой
Английских символов 27, плюс 10 символов цифр, плюс другие символы, в итоге как минимум 37.
С учетом регистра 37+20 = 57.
Переменную из 20 символов можна записать 57^20 способов