C++ Primer 学习笔记与思考_3 ---头文件那些事儿(extern)
2015-08-13 12:35
253 查看
(一)extern在头文件中的用法
因为头文件包含在多个源文件中,并且变量的定义只能出现一次,所以在头文件中, 只可以声明不可以出现定义。我们可以在头文件中用extern声明全局变量,这样在包含此头文件的cpp 中可直接使用 声明过的这个全局变量(如以下程序中的变量a)。
但是有三个例外:
1.头文件中可以定义类
2.值在编译时就已经知道的const对象
3.可以定义inline函数
#ifndef 检测指定的预处理器变量是否未定义,#define接受一个名字并定义改名字为预处理器变量。#endif代表处理的边界。
因为头文件包含在多个源文件中,并且变量的定义只能出现一次,所以在头文件中, 只可以声明不可以出现定义。我们可以在头文件中用extern声明全局变量,这样在包含此头文件的cpp 中可直接使用 声明过的这个全局变量(如以下程序中的变量a)。
但是有三个例外:
1.头文件中可以定义类
2.值在编译时就已经知道的const对象
3.可以定义inline函数
extern int ival; // yes extern int ival=1; //error int ival; //error const int ival =3; //yes(二)使用头文件保护符避免多重包含
#ifndef 检测指定的预处理器变量是否未定义,#define接受一个名字并定义改名字为预处理器变量。#endif代表处理的边界。
// mine.h #include <iostream> extern int a; const int b = 2; //int c; error 提示重复定义 //hello.cpp #include"mine.h" int f(int x) { return a++; } //amin.cpp #ifndef TEST //检测指定的预处理器变量是否未定义 #define TEST //定义预处理器变量 #include "mine.h" #endif //end using namespace std; int a = 2; //extern 都是针对全局变量的(如果是局部的不能在另一个cpp中使用) int main() { cout << a << " " << b << endl; return 0; }
相关文章推荐
- C语言register关键字—最快的…
- 我的C语言学生管理系统!
- C语言我的bug!
- C语言字符函数测试
- C语言 寻找输入二位数组中的鞍点
- C语言把字符数字转变成数值数字
- C语言中经典冒泡法与选择排序法
- 从一道题谈C++中构造函数调用构造函数
- C++中构造函数或析构函数定义为private
- C语言strncpy()函数
- c++线程池
- C++集合操作之集合差集:std::set_difference
- c++,初始化列表
- Windows/MFC,C++中的TCHAR体系/char体系/WCHAR体系及其相互转换
- GNU C 、ANSI C、标准C、标准c++区别和联系
- Windows/C++/MFC_ATL转换宏用于WCHAR,TCHAR,char转换以及其含义
- 星系模拟器开发日志(一) 如何科学地用C++画图
- c++ cout 格式化输出浮点数、整数及格方法
- C++的Public.lib(Public.dll) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
- 浅谈C/C++内存泄漏及其检测工具