博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++基础之全局变量
阅读量:5944 次
发布时间:2019-06-19

本文共 493 字,大约阅读时间需要 1 分钟。

C++的水比較深,之前我一直以为C++的全局变量会像其它语言一样,很easy仅仅要在头文件里,定义一个变量就可以,比方以下的test.h:

#ifndef _TEST_H#define _TEST_Hint a = 10;#endif
我都加上头文件保护符,总应该没有多重包括的问题了吧?没想到多个cpp文件引用同个头文件还是狂报错:error LNK2005 a 已经在 xx.obj中定义。

又拿起《C++ Primer》看了下。发现正确的应该这么写:

test.h

#ifndef _TEST_H#define _TEST_Hextern int a;#endif
test.cpp

#include "test.h"int a = 10;
原来:头文件用于声明而不是用于定义!定义仅仅能够出现一次。而声明则能够出现多次。

extern int a = 10;//初始化了值,是定义double b;            //没有extern关键词,是定义

对于头文件不应该包括定义这一规则。有3个例外。

头文件能够定义类,值在编译时就已知道的const对象和inline函数。

转载地址:http://ycwxx.baihongyu.com/

你可能感兴趣的文章
从前后端分离到GraphQL,携程如何用Node实现?\n
查看>>
JavaScript标准库系列——RegExp对象(三)
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
关于缓存命中率的几个关键问题!
查看>>
oracle中create table with as和insert into with as语句
查看>>
kafka连接异常
查看>>
11g废弃的Hint - BYPASS_UJVC
查看>>
为什么工业控制系统需要安全防护?
查看>>
Mongodb部署记录[3]-主从搭建
查看>>
hive sql操作
查看>>
tomcat 深度优化
查看>>
127 - "Accordian" Patience
查看>>
安卓完全退出程序的六种方法(欢迎新手学习,大手指导)
查看>>
elasticsearch 结构化搜索_在案例中实战基于range filter来进行范围过滤
查看>>
double free or corruption (fasttop)
查看>>
Mac 常用快捷键
查看>>
阿里云CentOS7安装Oracle11GR2
查看>>
nginc+memcache
查看>>
从拼多多优惠券事件看到的一些反思
查看>>
mac下完全卸载postgresql的方法
查看>>