博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++头文件中不应该放哪些东西?
阅读量:4143 次
发布时间:2019-05-25

本文共 927 字,大约阅读时间需要 3 分钟。

      先说明一下:以下程序针对的是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 
#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 
#include "file1.h"using namespace std;int main(){ cout << pi << endl; return 0;}

     上面的程序是完全正确的,不会出现冲突。

 

 

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

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

     

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

     

 

 

 

 

转载地址:http://mlzti.baihongyu.com/

你可能感兴趣的文章
qml有关矩形说明
查看>>
在qt中使用QSplitter设置初始比例setStretchFactor失效的解决方法
查看>>
repeater的使用
查看>>
qt msvc编译中文乱码解决
查看>>
qt实现点击出现窗口,点击其他任何地方窗口消失
查看>>
QML DropArea拖拉文件事件
查看>>
CORBA links
查看>>
读后感:&gt;
查看>>
ideas about sharing software
查看>>
different aspects for software
查看>>
To do list
查看>>
Study of Source code
查看>>
如何使用BBC英语学习频道
查看>>
spring事务探索
查看>>
浅谈Spring声明式事务管理ThreadLocal和JDKProxy
查看>>
初识xsd
查看>>
java 设计模式-职责型模式
查看>>
构造型模式
查看>>
svn out of date 无法更新到最新版本
查看>>
java杂记
查看>>