1) static、extern 和 const 以及它们在 C 和 C++ 中的使用有何不同?(默认联动和其他差异)
2) 在 C 中使用的头文件中允许以下声明和定义,然后将其包含在多个文件中。
static int testvar = 233;
extern int one;
extern int show();
int abc;
const int xyz; // const int xyz = 123; produces error
const定义在编译期间产生和错误(可能是由于多个定义)。但是我可以在头文件中声明一个 const 变量,但是因为我们可以定义它提供一个值,而且我们也不能在包含这个头文件的文件中分配一个值,所以它实际上是无用的。有没有办法在头文件中定义 const ,然后通过包含头文件在多个文件中访问它?
3) 需要进行哪些更改(如果有的话),以便此标头可以包含在C++中的多个文件中?
4)考虑以下
头文件.h
static int z = 23;
测试.c
#include"header.h"
z = 33; //gives error redefinition of z!!!??
void abc()
{
z = 33; //perfectly fine here!!??
}
在标头中定义/声明的静态变量在每个文件中都有内部链接,这意味着每个文件都将具有该变量的单独副本。那么为什么在任何函数外部为该 var 赋值会产生重新定义错误,而它是函数内部的完美文件?
编辑:添加了第四个问题。这非常令人困惑。
**PS:现在我只寻找问题 1 和 4 的答案。