头文件中的静态 const 变量声明

2024-01-08

如果我在头文件中声明 static const 变量,如下所示:

static const int my_variable = 1;

然后将此标头包含在多个标头中.c文件,编译器将为每个文件创建新实例,或者足够“聪明”地看到它是const并且只会为所有文件创建一个实例?

我知道我可以将其设为外部并在其中之一中定义它.c包含此标头的文件,但这是我试图不做的事情。


我详细回答了这个问题here https://stackoverflow.com/questions/3698043/static-variables-in-c/3698179#3698179。该答案适用于 C++,但也适用于 C。

翻译单元是单个源文件。每个翻译单元(包括您的标题)都会“看到”static const int. The static,在这种情况下,意味着范围my_variable仅限于翻译单位。所以你最终会得到一个separate my_variable对于每个翻译单元(“.c file").

编译器不会“聪明”地为所有文件只创建一个实例,它会faulty, 因为你明确地告诉它不要这样做(static).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

头文件中的静态 const 变量声明 的相关文章

随机推荐