• XSS.stack #1 – первый литературный журнал от юзеров форума

#define C++

spam_help

RAID-массив
Пользователь
Регистрация
09.08.2021
Сообщения
50
Реакции
11
Гарант сделки
1
Можно ли как то реализовать, чтобы в одной директиве #define для определения одного макроимени было несколько разных значений? и они рандомизировались при выборе, когда #дефайн передаешь в функцию для исполнения?

Допустим есть функция загрузчика и в него передается 'url'

C++:
#define url "http://url.com/somefiles"

Для него можно разные значения задавать прямо в директиве?

Про рандомизацию мало инфы нашел как-то полезной, одни числовые рандомизаторы
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Средствами пропроцессора как не сделай - будет костыль. Можно на базе __TIME__ и __DATE__ закостылить какой-то мини ГПСЧ, но скорее всего толку от него будет мало. Рекомендую либо воспользоваться языком с нормальным метапрограммированием (Nim, D), либо делать внешний генератор, который будет всю твою псевдо случайность в сорсах генерировать до непосредственно компиляции.
 
Если именно C++, а не Си - создай компайл-тайм функцию, массив нужных строк, по случайному индексу возвращай строку.
Вот тут есть пример реализации ГПСЧ: https://github.com/qis/xorstr/blob/master/include/xorstr.h
 
C++:
    const char* URL[5];
    URL[0] = "paste";
    URL[1] = "paste";
    URL[2] = "paste";
    URL[3] = "paste";
    URL[4] = "paste";

    srand(time(NULL));

    int rn = rand() % 5;

Может кому будет полезно
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Может кому будет полезно
Это ни разу не препроцессор во-первых, и, во-вторых, это происходит во времент выполнения, а не во времени компиляции, все пять урлов будут в исполняемом файле.
 
Это ни разу не препроцессор во-первых, и, во-вторых, это происходит во времент выполнения, а не во времени компиляции, все пять урлов будут в исполняемом файле.
Да я понимаю, что эта реализация не та, что я спрашивал. Решил не придумывать велосипед и прислушался к вашим двум советам
 
Да я понимаю, что эта реализация не та, что я спрашивал. Решил не придумывать велосипед и прислушался к вашим двум советам
Ты можешь делать это во время компиляции. Замени только rand() на ГПСЧ от XorStr (по ссылке выше).
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх