在cocos2d-x 的D:\phoneclient\cocos2dxlib\cocos\base\CCValue.h 文件中,发现如下代码:
全局查找之后,在D:\phoneclient\cocos2dxlib\cocos\base\CCValue.cpp 文件中,找到变量的定义:
extern int a;//这是声明a
int a;//这是定义a
正常情况下都是h声明cpp定义。
声明和定义是不同的,声明可以有多次,定义只能有一次。
h文件可能被很多cpp文件包含,所以里面只能写声明不能写定义,如果写定义,被包含几次就定义了几次。
条件指示符#ifndef 的最主要目的是防止头文件的重复包含和编译。一个源文件里包含了多个同一个头文件,最终只会包含一次当多个源文件包含了同一个头文件时,每个源文件就会包含一次,里面的变量就会被定义多次,链接时出错。
还有,头文件以及预编译宏#ifndef之类是C语言的概念,与编译原理无关
时间: 2024-08-24 20:31:53