C++头文件定义规则

  C++的头文件为相关声明提供了一个集中存放的位置。头文件一般包含类的定义,extern变量的声明和函数的声明。

因为头文件包含在多个源文件中,所以不应该包含有变量或函数的定义。否则在链接时会有redefinition的错误。

但有三个例外:头文件可以定义类,值在编译时就已知道的const对象和inline函数。这些实体可以在多个源文件中定义,只要每个源文件中的定义是相同的。

C++中的声明与定义

1. C++中变量必须且仅能定义一次,而且在使用变量之前必须定义或声明变量

  2. int i;定义了一个变量i。可以通过使用extern关键字声明变量名而不定义它,extern int i;声明了变量i。extern声明不是定义,也不分配存储空间,事实上,它只是说明变量定义在程序的其他地方。但如果声明有初始化式,则它被当做是定义,即使声明标记为extern。

3.综上,在多个文件中使用的变量,可以在一个头文件中声明,在一个源文件中定义,其他使用该变量的文件则包含声明变量的头文件。

时间: 2024-10-12 20:33:23

C++头文件定义规则的相关文章

头文件定义全局变量等问题 (转载)

全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 可以,在不同的C文件中以static形式来声明同名全局变量.头文件中不可以直接定义变量和函数,但是可以定义static变量 ,类. extern 用法,全局变量与头文件(重复定义) 用#include可以包含其他头文件中变量.函数的声明,为什么还要extern关键字,如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include<xxx.h> (xxx.h包含了a的声明)不就可以了么,为什么还要用extern呢??这个

头文件定义

头文件定义 1 #include <string> 2 #include <vector> 3 #include <algorithm> 4 #include <numeric> 5 #include <set> 6 #include <map> 7 #include <queue> 8 #include <iostream> 9 #include <sstream> 10 #include <

&lt;climits&gt;头文件定义的符号常量

<climits>头文件定义的符号常量 CHAR_MIN  char的最小值 SCHAR_MAX  signed char 最大值 SCHAR_MIN   signed char 最小值 UCHAR_MAX  unsigned char 最大值 SHRT_MAX  short 最大值 SHRT_MIN short 最小值 USHRT_MAX unsigned short 最大值 INT_MAX int 最大值 INT_MIN  int 最小值 UINT_MAX  unsigned int 最大

C/C++:多个.cpp文件包含同一个.h头文件定义方法

本文解决multiple definition of `XX'的错误.[出于反爬虫的目的,你不是在http://blog.csdn.net/zhanh1218上看到的,肯定不是最新最全的.] 关于头文件的定义中,请一定加上以下代码(此为头文件保护符): <span style="font-size:14px;"><span style="font-size:12px;">#ifndef PERSON_H_ #define PERSON_H_

cctype 头文件定义函数

header <cctype> (ctype.h) Character handling functions This header declares a set of functions to classify and transform individual characters. Functions These functions take the int equivalent of one character as parameter and return an int that ca

C/C++:多个.cpp文件包括同一个.h头文件定义方法

本文解决multiple definition of `XX'的错误.[出于反爬虫的目的,你不是在http://blog.csdn.net/zhanh1218上看到的,肯定不是最新最全的.] 关于头文件的定义中,请一定加上下面代码(此为头文件保护符): <span style="font-size:14px;"><span style="font-size:12px;">#ifndef PERSON_H_ #define PERSON_H_

头文件定义全局变量等问题

全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 可以,在不同的C文件中以static形式来声明同名全局变量.头文件中不可以直接定义变量和函数,但是可以定义static变量.类. extern用法,全局变量与头文件(重复定义) 用#include可以包含其他头文件中变量.函数的声明,为什么还要extern关键字,如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include<xxx.h>(xxx.h包含了a的声明)不就可以了么,为什么还要用extern呢??这个问题一

C 语言能不能在头文件定义全局变量?

可以,但一般不会将全局变量的定义写在头文件中. 因为如果多个 C 源文件都添加了头文件,很容易引起重定义的问题.这时候一般编译器都会提示:"multiple definition of... first defined here" 错误. 正确的作法是在 C 源文件中定义一个全局变量,并在对应的头文件中添加该变量的声明.例如: //var.c 一个主要用于定义全局变量的c源文件 int g_a; char g_x; //var.h 用于声明定义的全局变量 extern int  g_a

头文件定义和ARM指令

2015.2.2星期一,阴天 内存管理:内存的分配和释放等静态和动态内存:主要是在释放方式上的区别 静态变量:编译时就已经确定,定义在函数外面自动变量:在程序运行时才能在栈中确定只读数据节:存放常量的地方,包括字符常量,不修改的数据 查看数据存放在那个节点:(用命令)readelf -S (查看节点号和节点名)readelf -x .data a.out 生命周期:(分成静态,动态) 两个宏的定义和包含: 定义一个a.h#ifndef _A_H_#define _A_H_............