У меня есть приложение, которое строго разделяет пользователя и серверную часть. Единственный способ, которым пользователь может взаимодействовать с моим бэкэндом, - это одна функция. Чтобы указать, что пользователь хочет, первым аргументом этой функции является инструкция, которую пользователь хочет, чтобы бэкэнд выполнял (например, getData). Это выглядит примерно так
backendcall(getData, arg1, arg2, arg3, arg4)
Имена сервисов, которые предоставляет мой бэкэнд, сохраняются в файле .h (называемом определениями .h). Этот файл содержит только # define.
#define getData 1
#define setData 2
...
Таким образом, пользователю проще выполнять внутренние вызовы.
По соображениям безопасности я хотел бы рандомизировать значение #defines в начале.
Я знаю, что можно вызывать функции в таком определении, как это
#define var foo()
Моя проблема в том, что это не работает для меня, так как я не могу использовать функцию для определения случайного значения.
Даже если я добавлю целое число, подобное этому
int asdfqweryxcv = 20;
Я получаю сообщение об ошибке при компиляции, что это значение имеет несколько определений. Я могу изменить имя на любое другое, и результат всегда будет одинаковым.
Сообщение об ошибке выглядит следующим образом:
../../lib.a(userfile1.c.o):/home/../../../definitions.h:8: multiple definition of `asdfqweryxcv'
CMakeFiles/mult.c.o:/home/../../../definitions.h:8: first defined here
../../lib.a(userfile2.c.o):/home/../../../definitions.h:8: multiple definition of `asdfqweryxcv'
CMakeFiles/mult.c.o:/home/../../../definitions.h:8: first defined here
...
Я хотел бы рандомизировать эти определения и иметь уникальный номер для каждого определения.