Прошу прощения что не был в теме. Для чего мне всё это нужно: массив симоволов для меня - спец инфа(версия программы, дата создания и тд). Т.е. в бинарнике нужна полная несокращенная инфа. Анализируя этот бинарник, я определяю для себя всю специнфу.
- Если убрать полностью оптимизацию, то идет такое же сокращение моего массива.
- Соглашусь с тем что в стартапе при инициализации этой переменной идет полное копирование.
- const я привёл для примера. без const тоже самое.
Как у меня всё это реализовано: На самом деле у меня целая структура. Массив привел для примера. В этой структуре вся специнфа по программе. Соответсвенно если я объявляю эту структуру, то после компиляции она в бинарнике отражается, причем в произвольном месте. Так вот анализируя весь бинарник я нахожу строго определенную для меня последовательность(я использую ===), и всё что после этих трёх = я считаю специнфой с длиной тоже заданной мной.
Код
struct program_version
{
char start[4];
char name[10];
char version[3];
char sub_version[3];
char date[12];
char time[9];
char coment[30];
};
#define NAME "loader"
#define COMMENT "Специнфа по программе"
struct program_version ver = {"===", NAME, "01", "04", __DATE__, __TIME__, COMENT};
Вопрос ко всем: кто как реализовывал тему с помещением специнфы в свой бинарник для дальнейшего его использования?
Проблема в том что компилятор в бинарник помещает переменную структуры в сокращенном виде(вместо 71 байта(4+10+3+3+12+9+30) у него может быть любое число в зависимости от текста), причем сокращает ту последовательность символов что повторяется 3 раза и более. С учетом всех этих сокращений на выходе я всегда буду иметь не строго фиксированную длину и соответственно возникает проблема извлечения полезной для меня инфы.
Вижу следующие пути решения этой ситуации:
1) узнать алгоритм сжатия и расжатия бинарного файла и применять его самому для извлечения полезной для меня инфы
2) установить какой то спецификатор к перемнной, который не будет сжимать в бинарнике переменную
Как реализовать эти 2 пункта я не знаю. Поэтому прошу помощи