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

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

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

      file1.h文件如下:

 

#ifndef HEADER_FILE1

int 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; // 不可少,否则访问不到a
int main()
{
	cout << a << endl;

	return 0;
}

     当然,如果程序的很多文件中都要用到圆周率,那怎么办呢?可以采用如下方式:

 

     file1.h文件如下:

 

#ifndef HEADER_FILE1

const 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程序中,略有不同。

 

     


 

 



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值