В наших исходных файлах мы обычно имеем строку версии так:предотвратить GCC от удаления неиспользуемой переменной
static const char srcvers[] = "VERSION/foo.c/1.01/09.04.15";
Когда эта строка не оптимизирована далеко, это очень полезно в некоторых случаях, как можно определить, версию каждого исходного файла, связанного с исполняемым файлом, просто вызывая strings a.out | grep VERSION
.
К сожалению, это is оптимизировано прочь от gcc (используя '-O'). Поэтому мой вопрос заключается в том, есть ли простой способ (коммутатор компилятора был бы замечательным), чтобы gcc сохранил эту переменную (ее имя всегда одно и то же), не отключая других оптимизаций.
Редактировать
Что, на мой взгляд, делает вопрос, отличный от that one, что я был в надежде найти решение, для которого я бы не трогать тысячи исходных файлов.
Как добавить опцию '-v' на все ваши двоичные файлы, отображающие этот var? –
Может быть, попробуйте обмануть 'gcc', чтобы подумать, что используется переменная (что-то вроде' strlen (srcvers); ')? –
Попытка сделать его «изменчивым»? Он должен работать: 'volatile static const char srcvers [] =" VERSION/foo.c/1.01/09.04.15 ";' –