C++头文件中不应该放哪些东西?

来源:互联网 发布:淘宝装修页面图片 编辑:程序博客网 时间:2024/06/10 07:15

      先说明一下:以下程序针对的是C++语言

      直接上代码(程序中有错):

      file1.h文件如下:

#ifndef HEADER_FILE1int a;#define HEADER_FILE1#endif
      file1.cpp文件如下:

#include "file1.h"
      main.cpp文件如下:

#include "file1.h"int main(){return 0;}
     上面的程序在连接时会出错,为什么呢?因为在file1.cpp和main.cpp中会同时出现a, 碰撞了,冲突了。上面程序可以改为(正确程序):

     file1.h文件如下:

#ifndef HEADER_FILE1#define HEADER_FILE1#endif
     file1.cpp文件如下:

#include "file1.h"int a;
     main.cpp文件如下:

#include <iostream>#include "file1.h"using namespace std;extern int a; // 不可少,否则访问不到aint main(){cout << a << endl;return 0;}
     当然,如果程序的很多文件中都要用到圆周率,那怎么办呢?可以采用如下方式:

     file1.h文件如下:

#ifndef HEADER_FILE1const float pi = 3.14f;#define HEADER_FILE1#endif
     file1.cpp文件如下:

#include "file1.h"// 该文件现在可以访问到pi
    main.cpp文件如下:

#include <iostream>#include "file1.h"using namespace std;int main(){cout << pi << endl;return 0;}
     上面的程序是完全正确的,不会出现冲突。


     总结:1. 在头文件中不要出现int a;这样的定义,容易冲突(重定义问题)。

                  2. 在头文件中不要出现void fun(){}这样的非内联函数定义,容易冲突(重定义问题)。

     
     最后还是不忘补充一句:上面针对的是C++程序,在C程序中,略有不同。


     








原创粉丝点击