[英]How to create a string table
奇怪的是,几乎没有关于此主题的在线文档。 我有一个带有用于用户界面的硬编码字符串的应用程序,以及分散在源代码中的各种其他内容。 我试图至少汇总其中一些,因为其中许多需要根据应用程序的编译平台进行更改。
我在这里使用了第二个示例(下面复制以供参考),但是它在实际工作方式上的细节有些模糊。 似乎所有内容都已在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);
有人可以解释一下还是告诉我这是一个糟糕的主意,我应该做些其他事情吗?
您链接的示例只是在头文件的名称空间中声明一些const char*
,然后在.cpp文件中定义它们。 但是,对于C ++,使用的语法不正确-头文件中的声明应为extern const char*
而不是const char*
因为const
值默认为C ++中的内部链接。
大多数C ++编译器/链接器工具链会将来自一个转换单元( project_strings.cpp
)的所有字符串放到生成的可执行文件的只读数据段中。
这是处理静态字符串的一种合理,简单的方法,尽管如果您需要处理本地化或其他复杂性,则可能需要一些动态/复杂的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.