1.头文件中不能够放变量的界说!一般头文件中仅仅放变量的声明,由于头文件要被其他文件包括#include,假如把界说放在头文件的话,就不能防止屡次界说变量。C++不允许屡次界说变量,一个程序中对指定变量的界说只需一次,声明能够无数次。
三个破例:1)值在编译时就已知的const变量的界说可放在头文件中,如:const int num=10;
2.界说和声明是不同的。界说只能呈现一次,而声明能够呈现屡次。
下面的句子是界说,不能放在头文件中:
extern
double fica_rate;
3.在多个C文件的程序中,想在头文件中声明界说几个变量,假如给声明的变量赋值,则提示重复界说,在声明的变量前加extern只对变量进行声明,可是在什么当地给变量赋值呢??
答:加了extern后,就能够在其他任何引证此文件的当地来进行赋值的。比方说,可在主文件中进行赋值。
4.
5。 只需全局变量而且没有被static声明的变量才干声明为extern。所以,假如你不想自己源文件中全局变量被其他文件引证,你就能够给变量加上static声明。
这儿说的对错const的全局变量,假如是const的全局变量,假如想被其他文件拜访,需要在界说时,加上extern关键字,表明它可被其他文件声明运用的。不然的话,这个变量只能在它被界说的文件里边被拜访,其他文件不能拜访。
6. C++规范并没有规矩头文件中不能界说变量,只不过假如在头文件中界说变量,而该头文件又被屡次包括的话,会形成变量的从头界说。
7. 例如:在test.c文件中界说变量int global=0;
能够在头文件test.h中声明这个变量为extern int global;
要运用这个变量的其他文件,只需包括test.h就能够了。
8. static全局变量是有文件效果域的。在a.c中用了,在其他文件中就不能运用了。static变量一般放在.cpp或许.c文件中。不放在.h文件中。
9. 在某一个.c文件中界说:int num=0;
10. #ifndef、、、#define、、、#endif
能够确保在一个文件里仅仅界说一次。
比方:a.h引证b.h, c.cpp一起引证a.h和b.h。这样,#ifndef、、、#define、、、#endif能够确保c.cpp里的b.h只被引证一次。
留意:要把头文件的内容都放在#ifndef和#endif中。不论头文件会不会被多个文件引证,都要加上这个。
一般的格局:
#ifndef <标识>
#define <标识>
、、、、
、、、、
#endif
<标识>理论上说能够自在命名。可是每个头文件的这个“标识”都应该是仅有的。标识的命名规矩一般是头文件名全大写,前后加下划线,并把文件名中.也变成下划线。 如:stdio.h
#ifndef _STDIO_H_
#define _STDIO_H_
、、、
#endif
程序示例:
//a.h
#ifndef A
#define A
bool AorB(bool a)
{
}
#endif
//b.h
#include “a.h”
bool CorD(bool a)
{
}
//a.cpp
#include “a.h”
#include “b.h”
int main()
{
}