假设我正在编写一个 C 程序,当用户输入宝石的名称时,它会显示有关宝石的信息。
宝石的名称永远不会改变,而且只有不到 20 个,因此在运行时从外部文件中读取它们似乎有点矫枉过正。
我还需要从多个文件中访问这些名称(假设是两个)。
我通常做的是声明一个全局 char * 数组,如下所示:
char *g_rsc_names[] = {"linemate", "deraumere", "sibur", "mendiane", "phiras", "thystane"};
在我需要使用的文件中。这对我来说看起来很不错,但这仅允许我访问我声明此全局数组的文件中的名称。
在这种情况下,存储宝石名称的最佳/最干净的方法是什么?
您可以使用一个函数包装您的数组,该函数返回const char*
适当的石头名称,并将该声明放入您包含在多个文件中的全局头文件中:
const char* get_stone_name(size_t id);
在源文件中定义get_stone_name
如下:
const char* get_stone_name(size_t id) {
static const char* const names[] = {
"linemate", "deraumere", "sibur", "mendiane", "phiras", "thystane"
};
return (id < (sizeof(names) / sizeof(names[0])) ? names[id] : "");
}
Decaring names
asstatic
将保证不会被多次初始化,作为一个附带选项,您可以防止用户将您的数组索引到越界。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句