c - 在 C 的头文件中声明 static const 变量是否是可接受的做法

标签 c header declare

我有一个数组static const char*keys[]。我可以在头文件中将数组声明为

static const Char* keys[] = {
   "id",
   "ip", // a growing array.
}

还是应该始终在 .c 文件中进行声明?

最佳答案

我认为这可以工作,但是每次将头文件包含在 C 文件中时,都会为新数组分配内存。这意味着您可能会有同一个数组的多个副本。

做我认为你想做的事情的通常方法是:

c文件:

const char* keys[] = {
   "id",
   "ip", // a growing array.
}

.h 文件:

extern const char* keys[];

这样您就只有一个内存分配,并且可以在其他模块中引用该位置。

另一种方法是使数组静态(h 文件中没有任何内容)并编写 get 函数来访问字符串。

您采用静态的理由是什么?

关于c - 在 C 的头文件中声明 static const 变量是否是可接受的做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19248439/

相关文章:

linux - bash - 声明文档

c - 了解 void 指针和 typedef 指针函数

c - 在多个 C 模块之间传递大数组

javascript - 尝试在 header 中包含 js 脚本但没有成功

c++ 实现友元/内联函数

javascript - 为 declare 解释这个令人困惑的 dojo 教程语法

c++ - 在类头中声明类对象 C++

c - 如何知道文件的类型?

c - 如何使 64 位预处理器定义的常量在没有警告的情况下编译?

jquery - Jquery 代码应该放在页眉还是页脚中?