gpt4 book ai didi

c - 在头文件中使用 "extern const"使全局变量只读

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:06 25 4
gpt4 key购买 nike

我正在试验 GCC,发现您可以在头文件中声明变量 const,但在实现文件中保持它们可变。

编辑:这实际上不起作用,检查我自己的答案。

标题.h:

#ifndef HEADER_H_
#define HEADER_H_

extern const int global_variable;

#endif

header.c:

int global_variable = 17;

这使得 global_variable 可修改为实现,但 const 为每个包含 header.h 的文件。

#include "header.h"

int main(void)
{
global_variable = 34; /* "header.h" prevents this type of assignment. */
return 0;
}

这个技术在实践中使用了吗?

人们经常建议在用 C 语言构建接口(interface)时使用 get 函数来检索全局状态。与此相比,这种方法有什么优势吗?

对我来说,这种方法似乎更清晰,并且不会在每次有人尝试访问 global_variable 时增加函数调用的开销。

最佳答案

两种方法都在实践中使用,但大多数情况下的最佳实践是避免全局变量和静态。

注意:您的问题被标记为 C 和 C++,这是 C++ 方法。

更好的方法是创建一个包含“全局”状态的类,并将其传递给需要全局变量和常量的函数。这称为“上下文”。

上下文对象可以使用适当的信息隐藏来控制谁可以更新其状态、验证其状态等,就像任何其他对象一样。此外,它完全避免了对全局变量的需求,这是一种反模式。

关于c - 在头文件中使用 "extern const"使全局变量只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27736572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com