gpt4 book ai didi

c++ - C 和 C++ 中的 Const、static、extern 及其组合

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:04 25 4
gpt4 key购买 nike

<分区>

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 definition 在编译期间产生错误(可能是因为多个定义)。然而,我可以在头文件中声明一个常量变量,但是因为我们可以定义它来提供一个值,而且我们也不能在包含这个头文件的文件中赋值,所以它实际上是无用的。有没有办法在头文件中定义 const,然后通过包含头文件在多个文件中访问它?

3) 需要做哪些更改(如果有的话)才能将此 header 包含在 C++ 的多个文件中?

4) 考虑以下内容

header.h

static int z = 23;

测试.c

#include"header.h"

z = 33; //gives error redefinition of z!!!??

void abc()
{
z = 33; //perfectly fine here!!??
}

在头文件中定义/声明的静态变量在每个文件中都有内部链接,这意味着每个文件都有该变量的单独拷贝。那么,为什么在函数外部为该 var 赋值会导致重新定义错误,而它在函数内部是完美的文件?

编辑:添加了第 4 个问题。这非常令人困惑。

**PS:现在我只在寻找问题1和4的答案。

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