Как создать таблицу строк

Странно, что почти нет онлайн-документации по этому вопросу. У меня есть приложение с жестко закодированными строками для пользовательского интерфейса и различными другими вещами, разбросанными по источнику. Я пытаюсь собрать хотя бы некоторые из них, потому что некоторые из них должны меняться в зависимости от платформы, для которой компилируется приложение.

Я использовал второй пример Вот (скопировано ниже для справки), но это немного освещает детали того, как это на самом деле должно работать. Похоже, что все переинициализировано в project_strings.cpp и код никогда не вызывается.

// in your project_strings.h
namespace MyProjectStrings {
const char *password;
...
}

// the project_strings.cpp for the strings
#include "project_strings.h"namespace MyProjectStrings {
const char *password = "Password:";
...
}

// some random user who needs that string
#include "project_strings.h"std::string password(MyProjectStrings::password);

Может кто-то объяснить это или сказать мне, что это ужасная идея, и я должен сделать что-то еще?

1

Решение

Пример, на который вы ссылаетесь, просто объявляет const char*s в пространстве имен в заголовочном файле, а затем определяя их в файле .cpp. Используемый синтаксис некорректен для C ++, хотя объявления в заголовочном файле должны быть extern const char* скорее, чем const char* как const Значения по умолчанию для внутренней связи в C ++.

Большинство наборов инструментов компилятора / компоновщика C ++ помещают все строки из одного блока перевода (project_strings.cpp) вместе в сегменте данных только для чтения полученного исполняемого файла.

Это разумный, простой подход к обработке статических строк, хотя вы, вероятно, хотите что-то более динамичное / сложное, если вам нужно обрабатывать локализацию или другие сложности.

0

Другие решения


По вопросам рекламы [email protected]