关于#include、static、extern、namespace的使用

来源:互联网 发布:网络婚恋 编辑:程序博客网 时间:2024/04/29 22:30

        在说明这些命令之前,首先要明白头文件的作用。头文件(.h)在C/C++中的作用用于声明变量、函数、以及类,任意的源文件(.cpp)文件都可以包含它。比如说现在已经有一个decl.h,那么任何一个源文件包含它后,都可以按照自己的方式在源文件中定义头文件中的说明,或者说去实现那些函数、类等等。


        如果在头文件中使用static声明了变量,那么在包含此头文件的源文件中,这个变量的作用域只在当前文件中起效。比如说在decl.h文件中,如果有static int a,现在有一个f1.cpp文件,使用#include "decl.h"进行包含,则a的作用域为当前的f1文件。编译器编译f1.cpp后,会将代码转换为f1.obj文件,其实a的作用域仅在f1.obj文件中。此时如果在f2.cpp文件中在并没有使用#include "decl.h"此语句的情况下,使用extern int a时,则此时编译器会报错找不到a的定义,因为这个a变量已经被限定在f1.obj中,除非在decl.h中将static去掉,则编译器可编译通过。


       另外在不同的头文件中声明了相同的变量名或类名,可以使用namespace声明一个名字域以防止它们被包含进同一cpp中时发生冲突。


       通过以上说明,可以知道,当在进行程序设计时,应该提前做好规划,要明确各个头文件中具体要对哪些东西做声明,哪些源代码应该包含它们,以及不同功能的代码应该分放在哪些源文件中。

原创粉丝点击