Вместо того, чтобы хранить строки в сегменте данных вашей программы (поскольку у вас, очевидно, есть тонна строк), гораздо лучше иметь файл ресурсов, который содержит их. Затем просто динамически распределяйте пул строк и загружайте файл строковых ресурсов при запуске программы. Это должно полностью устранить проблему.
Если это не вариант, при условии, что они содержатся в области видимости файла, почему вы делаете строки static
? Это просто способ C (и не рекомендуется в C ++) говорить «только область действия файла». const char *pSTRING_ONE = "STRING_ONE";
создаст глобальную строку для всех блоков перевода. В этом случае нужно просто создать один файл, содержащий все строки, а затем обратиться к ним через объявления extern в заголовке.
Что произойдет, если вы не используете /GF
? Из ответа Bukes видно, что, объединяя строки, вы заставляете компилятор создавать один сегмент на строку.