C/C++ 外部链接的静态变量 static和extern的应用

        外部链接的静态变量具有文件作用域、外部链接和静态存储期。该类别有时称为外部存储类别(external storage class),属于该类别的变量称为外部变量(external variable)。把变量的定义性声明放在所有函数的外面便创建了外部变量。当然,为了指出该函数使用了外部变量,可以在函数中用关键字extern再次声明。如果一个源代码文件使用的外部变量定义在另一个源代码文件中,则必须使用extern在该文件中声明该变量。

示例源码:

Common.h文件:

#pragma once
static int g_DataStatic = 5;void setCommon(int data)
{g_DataStatic = data;
}

Value.h文件

#pragma once
#include "Common.h"
extern int g_DataStatic;void setValue(int data)
{g_DataStatic = data;
}

主函数(Len_static.cpp)文件:

// Len_static.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
#include "Common.h"
#include "Value.h"
extern int g_DataStatic ;int main()
{	printf("g_DataStatic = %d\n\n", g_DataStatic);setValue(100);printf("g_DataStatic = %d\n\n", g_DataStatic);setCommon(105);printf("g_DataStatic = %d\n\n", g_DataStatic);
}

执行结果:

解析说明:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

U-Net: Convolutional Networks for Biomedical Image Segmentation(CVPR2015)

文章目录 AbstractIntroductionNetwork ArchitectureConclusiontorch code hh 源代码 Abstract 人们普遍认为&#xff0c;深度网络的成功训练需要成千上万个带注释的训练样本。在这篇论文中&#xff0c;我们提出了一个网络和训练策略&#xff0c;该策略依赖于数据增强的强大使…

Netty 与 RPC(一)

Netty 与 RPC Netty 原理 Netty 是一个高性能、异步事件驱动的 NIO 框架&#xff0c;基于 JAVA NIO 提供的 API 实现。它提供了对TCP、UDP 和文件传输的支持&#xff0c;作为一个异步 NIO 框架&#xff0c;Netty 的所有 IO 操作都是异步非阻塞的&#xff0c;通过 Future-List…

React学习计划-React16--React基础(四)生命周期和diffing算法,key的作用

1. 生命周期 1. 声命周期的三个阶段&#xff08;旧&#xff09; 初始化阶段&#xff1a;由ReactDOM.render()触发—初次渲染 1. constructor() 2. componentWillMount() 3. render() 4. componentDidMount() > 常用一般在这个钩子中做一些初始化的事情&#xff0c;例如&am…

亚马逊测评的重要性和技术选择

亚马逊测评是指卖家通过各种途径&#xff0c;如测评平台、社区、红人等&#xff0c;联系到亚马逊的买家&#xff0c;让其对卖家的产品进行评价和留下真实的综合评价&#xff0c;这对于跨境电商卖家来说非常重要&#xff0c;因为亚马逊的排名和转化率很大程度上取决于产品的评价…

Python代码示例 | 时间序列数据的组成

时间序列数据是以固定的时间间隔记录或收集的数据点序列。它是一种跟踪变量随时间演变的数据&#xff0c;如销售&#xff0c;股票价格&#xff0c;温度等。定期的时间间隔可以是每天&#xff0c;每周&#xff0c;每月&#xff0c;每季度或每年&#xff0c;数据通常表示为线图或…

ArchLinux搭建riscv测试环境(失败)

参考 Boot an Arch Linux RISC-V using qemu-system - JieJiSS Blog 安装ArchLinux安装所需包 sudo pacman -S arch-install-scripts git qemu-img qemu-system-riscv sudo pacman -S riscv64-linux-gnu-gcc 安装yay git clone https://aur.archlinux.org/yay-bin cd yay-b…

Java小案例-Bean是如何注入到Spring中的,有几种注入方式

前言 关于Bean注入Spring容器的方式网上也有很多相关文章&#xff0c;但是很多文章可能会存在以下常见的问题 注入方式总结的不全 没有分析可以使用这些注入方式背后的原因 没有这些注入方式在源码中的应用示例 ... 所以本文就带着解决上述的问题的目的来重新梳理一下Bea…

关于增强监控以检测针对Outlook Online APT活动的动态情报

一、基本内容 2023年6月&#xff0c;联邦民事行政部门&#xff08;FCEB&#xff09;在其Microsoft 365&#xff08;M365&#xff09;云环境中发现了可疑活动。该机构迅速向Microsoft和网络安全和基础设施安全局&#xff08;CISA&#xff09;报告了此情况。经过深入调查&#x…

C 语言中布尔值的用法和案例解析

C语言中的布尔值 在编程中&#xff0c;您经常需要一种只能有两个值的数据类型&#xff0c;例如&#xff1a; 是/否开/关真/假 为此&#xff0c;C语言有一个 bool 数据类型&#xff0c;称为布尔值。 布尔变量 在C语言中&#xff0c;bool 类型不是内置数据类型&#xff0c;例…

docker安装的php 在cli中使用

1: 修改 ~/.bashrc 中新增 php7 () {ttytty -s && tty--ttydocker run \$tty \--interactive \--rm \--volume /website:/website:rw \--workdir /website/project \--networkdnmp_dnmp \dnmp_php php "$" }–networkdnmp_dnmp 重要, 不然连不上数据库, 可通…

【数字通信原理】复习笔记

哈喽&#xff89;hi~ 小伙伴们许久没有更新啦~ 花花经历了漫长的考试周~ 要被累成花干啦。今天来更新《数字通信原理》手写笔记给需要的小伙伴~ &#xff08;注:这是两套笔记&#xff0c;是需要结合来看的哦~&#xff09; 第一套的笔记请结合bilibili:张锦皓的复习课程来哦。 第…

图神经网络并在 TensorFlow 中实现

asokraju.medium.com 一、说明 本文将引导您了解图神经网络 (GNN) 并使用 TensorFlow 实现该网络。在后续的 文章中&#xff0c;我们讨论 GNN 的不同变体及其实现。这是一个分步计划&#xff1a; 图神经网络 (GNN) 的使用&#xff1a;我们首先讨论 GNN 是什么、它们如何工作以及…

项目管理常用的ChatGPT通用提示词模板

项目目标设定&#xff1a;如何设定明确、可衡量的项目目标&#xff1f; 项目计划制定&#xff1a;如何制定详细的项目计划&#xff0c;包括时间表、任务分配、资源需求等&#xff1f; 风险管理&#xff1a;如何识别和评估项目风险&#xff0c;并制定相应的应对措施&#xff1…

Leetcode—415.字符串相加【简单】

2023每日刷题&#xff08;六十八&#xff09; Leetcode—415.字符串相加 实现代码 class Solution { public:string addStrings(string num1, string num2) {string ans;int len1 num1.size();int len2 num2.size();int i len1 - 1, j len2 - 1;int sum 0, c 0;while(i…

Leetcode-230.二叉搜索树中第k小的元素(Python)

题目链接 此题看题解&#xff0c;其实这道题蛮简单的&#xff0c;需要注意二叉搜索树左小右大&#xff0c;为什么还需要看题解&#xff0c;需要反思&#xff01; # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNon…

Unity Destroy和DestroyImmediate方法

Destroy和DestroyImmediate都是Unity用于销毁游戏对象的方法。 它们的语法是&#xff1a; Destroy(gameObject); DestroyImmediate(gameObject); 都接受一个参数&#xff0c;即销毁的对象。 但是它们是有一定区别的。 1、Destroy方法它会延迟销毁&#xff0c;当我们调用它…

MFC 自定义压缩,解压缩工具

界面效果如下&#xff1a; 对外提供的接口如下&#xff1a; public: void setCallback(zp::Callback callback, void* param); bool open(const zp::String& path, bool readonly false); bool create(const zp::String& path, const zp::String& inputPath)…

【JavaWeb】Listener Filter

Listener监听器 一、Listener概述 1、监听器概念 web的三大组件之一。 2、事件监听机制 事件&#xff1a;一件事情事件源&#xff1a;事件发生的地方监听器&#xff1a;一个对象注册监听&#xff1a;将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后&#xf…

P5410 【模板】扩展 KMP/exKMP(Z 函数)

【模板】扩展 KMP/exKMP&#xff08;Z 函数&#xff09; 题目描述 给定两个字符串 a , b a,b a,b&#xff0c;你要求出两个数组&#xff1a; b b b 的 z z z 函数数组 z z z&#xff0c;即 b b b 与 b b b 的每一个后缀的 LCP 长度。 b b b 与 a a a 的每一个后缀的 LC…

关于“Python”的核心知识点整理大全37

目录 13.6.2 响应外星人和飞船碰撞 game_stats.py settings.py alien_invasion.py game_functions.py ship.py 注意 13.6.3 有外星人到达屏幕底端 game_functions.py 13.6.4 游戏结束 game_stats.py game_functions.py 13.7 确定应运行游戏的哪些部分 alien_inva…