首页 > 代码库 > C++基础之全局变量
C++基础之全局变量
C++的水比较深,之前我一直以为C++的全局变量会像其他语言一样,非常简单只要在头文件中,定义一个变量即可,比如下面的test.h:
#ifndef _TEST_H #define _TEST_H int a = 10; #endif
我都加上头文件保护符,总应该没有多重包含的问题了吧?没想到多个cpp文件引用同个头文件还是狂报错:error LNK2005 a 已经在 xx.obj中定义。
又拿起《C++ Primer》看了下,发现正确的应该这么写:
test.h
#ifndef _TEST_H #define _TEST_H extern int a; #endif
test.cpp
#include "test.h" int a = 10;
原来:头文件用于声明而不是用于定义!定义只可以出现一次,而声明则可以出现多次。
extern int a = 10;//初始化了值,是定义 double b; //没有extern关键词,是定义
对于头文件不应该包含定义这一规则,有3个例外。头文件可以定义类,值在编译时就已知道的const对象和inline函数。
C++基础之全局变量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。