新手学C++问题六:头文件问题。

lungedui 2011-10-23 02:36:56
大家好。我在自学C++,看的是《C++大学自学教程》。
我遇到下面的例子中编译要求头文件。如何添加头文件?
编译信息:
fatal error C1083: 无法打开包括文件:“quiksort.h”: No such file or directory
代码:#include <iostream>
#include <iomanip>
#include <cstdlib>
#include "quiksort.h"
int main()
{
int dim;
std::cout << "HOw many integaers?" << std::endl;
std::cin >>dim;
int* arrs = new int[dim+1];
int i;
for(i = 0; i < dim; i++)
arrs[i] = std::rand();
std::cout << std::endl << "-----unsorted-----"
<<std::endl;
for(i = 0; i < dim; i++)
std::cout<< std::setw(8) <<arrs[i];
quicksort(arrs,dim);
std::cout << std::endl << "-----sorted------"
<<std::endl;
for(i = 0; i < dim; i++)
std::cout<<std::setw(8) << arrs[i];
delete arrs;
return 0;


书中的头文件源码:#ifndef QUIKSORT_H
#define QUIKSORT_H

template<class T>
inline void swap(T& t1,T& t2)
{
T hold = t2;
t2 = t1;
t1 = hold;
}
template<class T>
void quicksort(T *array,int hi,int lo= 0)
{
while (hi >lo) {
int i =lo;
int j =hi;
do {
while (array[i] < array[lo] && i<j)
i++;
while(array[--j] >array[lo]);
if(i<j)
swap(array[j] array[i]);
}
while (i<j);
swap(array[lo],array[j]);

if(j-lo>hi - (j+1)){
quicksort(array,j-1,lo);
lo= j+1;
}
else {
quicksort(array,hi,j+1);
hi=j-1;
}
}
}
#endif

我关于头文件的提问帖:http://topic.csdn.net/u/20111020/15/700a8ad3-910f-464a-950a-ca2c899de7dc.html
...全文
187 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lungedui 2011-10-24
  • 打赏
  • 举报
回复
谢谢楼上的两位兄弟了。我是刚刚开始学C++的。书里只给出了头文件的代码却没有提怎么添加文件。
七擒关羽 2011-10-24
  • 打赏
  • 举报
回复
我真是佩服LZ了,请按照步骤操作
1、新建1.txt文件,看下你新建的文件全名是什么,如果只是1,那么把“隐藏文件扩展名”设置下,去勾
2、把代码复制进1.txt,然后保存,把1.txt重命名成quiksort.h
3、把quiksort.h拷贝到你cpp文件所在的文件夹里面

4、终极修改法:适用于以上3个步骤操作失败后 把#include "quiksort.h"修改成
#include <quiksort.h>
AndyZhang 2011-10-24
  • 打赏
  • 举报
回复
你看看你要用到那个h文件中的哪些东西,不用的都删除了,然后放到自己的目录下面,加载到项目中不就ok了吗?
lungedui 2011-10-24
  • 打赏
  • 举报
回复
头文件代码编译通不过啊。如何修改?
error LNK2001: 无法解析的外部符号 _mainCRTStartup
1>C:\Users\Administrator\Documents\Visual Studio 2010\Projects\12.3\Debug\12.3.exe : fatal error LNK1120: 1 个无法解析的外部命令

头文件代码:#ifndef QUIKSORT_H
#define QUIKSORT_H

template<class T>
inline void swap(T& t1,T& t2)
{
T hold = t2;
t2 = t1;
t1 = hold;
}
template<class T>
void quicksort(T *array,int hi,int lo= 0)
{
while (hi >lo) {
int i =lo;
int j =hi;
do {
while (array[i] < array[lo] && i<j)
i++;
while(array[--j] >array[lo]);
if(i<j)
swap(array[j] array[i]);
}
while (i<j);
swap(array[lo],array[j]);

if(j-lo>hi - (j+1)){
quicksort(array,j-1,lo);
lo= j+1;
}
else {
quicksort(array,hi,j+1);
hi=j-1;
}
}
}
#endif
Oo海燕oO 2011-10-23
  • 打赏
  • 举报
回复
放到这个程序源代码所在的文件夹底下试试。如果还不行,可能要设置一下编译的设置。
lirunfa 2011-10-23
  • 打赏
  • 举报
回复
在工程上右键 添加现有文件,然后把.h文件添加进去哦亲
wo_de_fen_dou 2011-10-23
  • 打赏
  • 举报
回复
添加到工程中的头文件(header file )中 然后再把源文件加入到sourc file 在源文件中加上一句include "quiksort.h"就ok啦。
cjw956569774 2011-10-23
  • 打赏
  • 举报
回复
对的,添加到工程
loveheronly 2011-10-23
  • 打赏
  • 举报
回复
将“QUIKSORT.h”添加到工程
然后需要引用#include "quiksort.h"
lungedui 2011-10-23
  • 打赏
  • 举报
回复
我有头文件的代码如一楼,但是头文件如我的问题帖得到的回答没有main函数编译通不过啊。这个问题怎么办?
JieTouLangRen 2011-10-23
  • 打赏
  • 举报
回复
先确定是否已将“QUIKSORT.h”添加到工程
善良超锅锅 2011-10-23
  • 打赏
  • 举报
回复
你把头文件添加到工程中了吗?
suntiyang 2011-10-23
  • 打赏
  • 举报
回复
没懂,同求&……

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧