XOR препроцессором
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
XOR препроцессором
есть идея написать макрос для строк, кодирующий по XOR или чем либо еще простым. В качестве маски удобно использовать имя файла или дату компиляции.
static const char *array = "привет Вася"; // вместо этого хочется :
static const char *array = __DEFINE_XOR("привет Вася", __FILE__);
в теле проги использующей данный указатель уже обычную inline функцию :
printf("%s", decode_xor(array, __FILE__) );
какие будут идеи ? у препроцессора не так уж много функциональности
static const char *array = "привет Вася"; // вместо этого хочется :
static const char *array = __DEFINE_XOR("привет Вася", __FILE__);
в теле проги использующей данный указатель уже обычную inline функцию :
printf("%s", decode_xor(array, __FILE__) );
какие будут идеи ? у препроцессора не так уж много функциональности
-
- Частый Гость
- Сообщения: 10
- Зарегистрирован: 28 май 2004, 15:42
Re: XOR препроцессором
use c++ templates, luke
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
1) А не перепутал ли гуру ресурс с просто данными в сегменте данных приложения.Lepsik писал(а):--use c++ templates, luke
ты не понял идеи. В ресурсах должна остатся закодированная строка
2) Возможно я не прав, но думаю, что так и останется только строка "привет вася". Это ясно и так (мне). Можешь проверить любым преобразованием в макро твою строчку. Там только "вася" и останется. Ибо макро будет разворячиваться препроцеессором в последовательность операций, а не результат этих операций. Проверь потом hexview.
ПС. Извини, если что не так сказал, ибо я сейчас всё больше с роботами, да со сваркой на заводе. Иногда молотком работаю, а не головой.

- ajkj3em
- Маньяк
- Сообщения: 2063
- Зарегистрирован: 12 ноя 2006, 06:53
это ты не понял идеи. есть такая вещь как default template arguments, static class members и template specialization. на них можно замутить чего угодно, что будет computed _in compilation time_.Lepsik писал(а):--use c++ templates, luke
ты не понял идеи. В ресурсах должна остатся закодированная строка
ps. и, друг, используй стандартный quote mechanism форума. а то задолбал уже своими минусами
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
не буду отсылать тебя к первоисточникам.vg писал(а):2) Возможно я не прав, но думаю, что так и останется только строка "привет вася". Это ясно и так (мне). Можешь проверить любым преобразованием в макро твою строчку. Там только "вася" и останется. Ибо макро будет разворячиваться препроцеессором в последовательность операций, а не результат этих операций.
Вот тебе простейший пример твоей неправоты
http://www.rsdn.ru/article/qna/Cpp/bin.xml
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
- ajkj3em
- Маньяк
- Сообщения: 2063
- Зарегистрирован: 12 ноя 2006, 06:53
вот тебе пример http://www.cantrip.org/realworld.html#sqrtLepsik писал(а):это ты сам придумал ? что имено компьютед будет ?drain bamage писал(а):computed _in compilation time_.
дальше сам думай
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
1) Это другое. Я же говорил про то, что нельзя таким образом получить модифицированную строку в сегменте данных. Там всегда будет исходная строка. Не хочу спорить дальше. Если же у тебя получится хоть какое-то преобразование в compilation time - писни. Мне правда интересно.Lepsik писал(а):не буду отсылать тебя к первоисточникам.vg писал(а):2) Возможно я не прав, но думаю, что так и останется только строка "привет вася". Это ясно и так (мне). Можешь проверить любым преобразованием в макро твою строчку. Там только "вася" и останется. Ибо макро будет разворячиваться препроцеессором в последовательность операций, а не результат этих операций.
Вот тебе простейший пример твоей неправоты
http://www.rsdn.ru/article/qna/Cpp/bin.xml
2) Скорее всего здесь местная публика права с шаблонами.
Надо попробовать. Я бы попробовал. Не западло.
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
не годится все равно в ресурс попадаетdrain bamage писал(а):вот тебе пример http://www.cantrip.org/realworld.html#sqrt
дальше сам думай
2VG
--Это другое. Я же говорил про то, что нельзя таким образом получить модифицированную строку в сегменте данных.
можно. Для этого и нужен препроцессор, которые должен менять строку до компиляции
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Блин, ну ты блин задвинул.Lepsik писал(а): можно. Для этого и нужен препроцессор, которые должен менять строку до компиляции


Лепсик, ты знаешь я тебя уважаю. Но иногда ты такое несёшь

Не умеет этого делать препроцессор - н е у м е е т. По крайней мере тот, что пользуешь ты.


- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Да ты не ругайся, ЛепсикLepsik писал(а):один утверждает что в теплейтах вычисление делают .
да уж еще знаток С++.
ты бы уж не свистел что препроцессор макроподстановки делает.
посмотри что просхoдит в конструкции a = 2 + 3 а потом называй себя умным.
Я фигею любой "знаток" учит меня жить

Ты вот думаешь, что будет в коде вставлено 5? А я вот сомневаюсь.
Так, что ж там будет? В ассемблерном коде?
Ред. Ты был прав - см. сл. постинг. Я несколько поспешил. Как всегда

Последний раз редактировалось vg 24 окт 2004, 13:15, всего редактировалось 1 раз.