gpt4 book ai didi

c++ - 操作全局静态变量

转载 作者:行者123 更新时间:2023-11-28 01:25:01 25 4
gpt4 key购买 nike

假设我有 main.cppfile.hfile.cpp。其中 file.cpp 实现了 file.h 中的所有原型(prototype),而 main.cpp 包括 file.h

非常简单的结构。我想知道如果我在 main.cpp 中声明了一个静态全局变量,那么在实现 file.cpp 中的所有函数时是否可以访问该变量?快速尝试一下,情况似乎并非如此……我什至无法编译它。

但是有没有可能解决这个问题?

澄清一下

文件.h:

#ifndef __FILE_H
#define __FILE_H
#include <iostream>

void my_func();

#endif

文件.cpp

#include "file.h"

using namespace std;

void my_func() {
//do something with my_static_var
}

和main.cpp

#include "file.h"

static int my_var = 0;

int main(int argc, char** argv) {
my_func();
return 0;
}

假设不涉及任何类

最佳答案

具有内部链接 的变量只能从其翻译单元(通常是源文件)内的范围引用。使用 static 关键字声明的变量具有内部链接。

具有外部链接的变量可以从其他翻译单元(其他源文件)引用。如果变量不在匿名命名空间中并且:

  • 它是用extern关键字声明的,或者
  • 它是 namescape-scope(例如问题中的 my_var)并且声明时既没有 const 也没有 static(不像 my_var 在问题中)。

引用:storage duration

关于c++ - 操作全局静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54275927/

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