XOR препроцессором

Все, что вы хотели знать о программизме, но боялись спросить.
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

XOR препроцессором

Сообщение Lepsik »

есть идея написать макрос для строк, кодирующий по XOR или чем либо еще простым. В качестве маски удобно использовать имя файла или дату компиляции.

static const char *array = "привет Вася"; // вместо этого хочется :

static const char *array = __DEFINE_XOR("привет Вася", __FILE__);

в теле проги использующей данный указатель уже обычную inline функцию :

printf("%s", decode_xor(array, __FILE__) );

какие будут идеи ? у препроцессора не так уж много функциональности
temp-ii
Частый Гость
Сообщения: 10
Зарегистрирован: 28 май 2004, 15:42

Re: XOR препроцессором

Сообщение temp-ii »

use c++ templates, luke
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

--use c++ templates, luke

ты не понял идеи. В ресурсах должна остатся закодированная строка
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Lepsik писал(а):--use c++ templates, luke

ты не понял идеи. В ресурсах должна остатся закодированная строка
1) А не перепутал ли гуру ресурс с просто данными в сегменте данных приложения.
2) Возможно я не прав, но думаю, что так и останется только строка "привет вася". Это ясно и так (мне). Можешь проверить любым преобразованием в макро твою строчку. Там только "вася" и останется. Ибо макро будет разворячиваться препроцеессором в последовательность операций, а не результат этих операций. Проверь потом hexview.

ПС. Извини, если что не так сказал, ибо я сейчас всё больше с роботами, да со сваркой на заводе. Иногда молотком работаю, а не головой. :lol:
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

Lepsik писал(а):--use c++ templates, luke

ты не понял идеи. В ресурсах должна остатся закодированная строка
это ты не понял идеи. есть такая вещь как default template arguments, static class members и template specialization. на них можно замутить чего угодно, что будет computed _in compilation time_.

ps. и, друг, используй стандартный quote mechanism форума. а то задолбал уже своими минусами
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

vg писал(а):2) Возможно я не прав, но думаю, что так и останется только строка "привет вася". Это ясно и так (мне). Можешь проверить любым преобразованием в макро твою строчку. Там только "вася" и останется. Ибо макро будет разворячиваться препроцеессором в последовательность операций, а не результат этих операций.
не буду отсылать тебя к первоисточникам.
Вот тебе простейший пример твоей неправоты

http://www.rsdn.ru/article/qna/Cpp/bin.xml
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

drain bamage писал(а):computed _in compilation time_.
это ты сам придумал ? что имено компьютед будет ?
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

Lepsik писал(а):
drain bamage писал(а):computed _in compilation time_.
это ты сам придумал ? что имено компьютед будет ?
вот тебе пример http://www.cantrip.org/realworld.html#sqrt
дальше сам думай
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Lepsik писал(а):
vg писал(а):2) Возможно я не прав, но думаю, что так и останется только строка "привет вася". Это ясно и так (мне). Можешь проверить любым преобразованием в макро твою строчку. Там только "вася" и останется. Ибо макро будет разворячиваться препроцеессором в последовательность операций, а не результат этих операций.
не буду отсылать тебя к первоисточникам.
Вот тебе простейший пример твоей неправоты

http://www.rsdn.ru/article/qna/Cpp/bin.xml
1) Это другое. Я же говорил про то, что нельзя таким образом получить модифицированную строку в сегменте данных. Там всегда будет исходная строка. Не хочу спорить дальше. Если же у тебя получится хоть какое-то преобразование в compilation time - писни. Мне правда интересно.


2) Скорее всего здесь местная публика права с шаблонами.
Надо попробовать. Я бы попробовал. Не западло.
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

drain bamage писал(а):вот тебе пример http://www.cantrip.org/realworld.html#sqrt
дальше сам думай
не годится все равно в ресурс попадает

2VG
--Это другое. Я же говорил про то, что нельзя таким образом получить модифицированную строку в сегменте данных.

можно. Для этого и нужен препроцессор, которые должен менять строку до компиляции
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Lepsik писал(а): можно. Для этого и нужен препроцессор, которые должен менять строку до компиляции
Блин, ну ты блин задвинул. :lol: Гдеж ты его возмешь? :lol:
Лепсик, ты знаешь я тебя уважаю. Но иногда ты такое несёшь :lol:
Не умеет этого делать препроцессор - н е у м е е т. По крайней мере тот, что пользуешь ты. :lol: (И я, т.е. в ВСВ++ и МС++ :( )
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

vg писал(а):Лепсик, ты знаешь я тебя уважаю. Но иногда ты такое несёшь :lol:
Не умеет этого делать препроцессор - н е у м е е т. По крайней мере
может просто ты не знаешь ?

что делает данная строка и в каких случаях?

#if (__LINE__> ((__LINE__/2)*2) )
assert(0)
#endif
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

может просто ты не знаешь ?
Разумеется. Где уж...
#if (__LINE__> ((__LINE__/2)*2) )
assert(0)
#endif
Это другое и не имеет отношения к результату преобразования твоей строки "просто Василий" до компиляции.

Вася! :lol:
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

один утверждает что в теплейтах вычисление делают .

да уж еще знаток С++.
ты бы уж не свистел что препроцессор макроподстановки делает.

посмотри что просхoдит в конструкции a = 2 + 3 а потом называй себя умным.

Я фигею любой "знаток" учит меня жить
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Lepsik писал(а):один утверждает что в теплейтах вычисление делают .

да уж еще знаток С++.
ты бы уж не свистел что препроцессор макроподстановки делает.

посмотри что просхoдит в конструкции a = 2 + 3 а потом называй себя умным.

Я фигею любой "знаток" учит меня жить
Да ты не ругайся, Лепсик :lol:
Ты вот думаешь, что будет в коде вставлено 5? А я вот сомневаюсь.
Так, что ж там будет? В ассемблерном коде?

Ред. Ты был прав - см. сл. постинг. Я несколько поспешил. Как всегда :lol:
Последний раз редактировалось vg 24 окт 2004, 13:15, всего редактировалось 1 раз.
Ответить