关于C语言 文件预处理 头文件文件包含的问题,怎么编写自己的头文件啊?
谭浩强的课本上关于这个内容只是提到了一下,例子都没有,哪位大虾给复制个例子看看,感激不尽另外我编的错在哪里?编译出来出现乱码了主文件#include<stdio.h>#i...
谭浩强的课本上关于这个内容只是提到了一下,例子都没有,哪位大虾给复制个例子看看,感激不尽
另外 我编的错在哪里?编译出来出现乱码了
主文件
#include<stdio.h>
#include<math.h>
#include"sqrt.cpp"
void main()
{double a;
scanf("%f",&a);
printf("%f开方后的数是%f",a,f(a));
}
sqrt.cpp
#include<stdio.h>
#include<math.h>
double f(double a)
{a=sqrt(a);
return(a);
}
还有哪些可以省略的地方吗? 展开
另外 我编的错在哪里?编译出来出现乱码了
主文件
#include<stdio.h>
#include<math.h>
#include"sqrt.cpp"
void main()
{double a;
scanf("%f",&a);
printf("%f开方后的数是%f",a,f(a));
}
sqrt.cpp
#include<stdio.h>
#include<math.h>
double f(double a)
{a=sqrt(a);
return(a);
}
还有哪些可以省略的地方吗? 展开
4个回答
展开全部
把你的cpp改.h,
再把main函数上面的 #include<stdio.h>
#include<math.h> 这两个去掉就行了。
包含文件的格式不能为cpp
另外这样只能保证编译不出错,你的程序 本身还是有问题的。
scanf("%f",&a);
这一句,因为a是double型的,所以要改成 scanf("%lf",&a);
不然是不会得到正确结果 的。
再把main函数上面的 #include<stdio.h>
#include<math.h> 这两个去掉就行了。
包含文件的格式不能为cpp
另外这样只能保证编译不出错,你的程序 本身还是有问题的。
scanf("%f",&a);
这一句,因为a是double型的,所以要改成 scanf("%lf",&a);
不然是不会得到正确结果 的。
追问
可以把cpp改成.c吧?文件包含意思是不是就可以看做直接把例子中sqrt.h所有的内容放在头文件的部分?函数声明啊变量什么的在所有文件中只要出现一次就可以了?
追答
在C++里是.h,在C里是.c,这个就相当 是把那些代码直接 写到主文件里
但是变量不要声明在头文件里,因为头文件可以防止 重复包含,但是变量 不能防止重定义,除非你确定你的头文件只会被包含一次,而且不会被间接包含。
展开全部
//注:错误有两处,省略的有一处,在下面已经列举,该正后的程序可以正确运行.
//希望kutpbpb的回答能对你有所帮助!
sqrt.h //头文件扩展名应该是.h
#include<stdio.h>
#include<math.h>
double f(double a)
{a=sqrt(a);
return(a);
}
#include<stdio.h>
#include<math.h> //这两个头文件因为已经由头文件包含过了,所以可以省略
#include"sqrt.h" //这里也要跟改正后的一致
void main()
{double a;
scanf("%lf",&a); //这里输入double类型的数,控制格式应为lf
printf("%f开方后的数是%f",a,f(a));
}
//希望kutpbpb的回答能对你有所帮助!
sqrt.h //头文件扩展名应该是.h
#include<stdio.h>
#include<math.h>
double f(double a)
{a=sqrt(a);
return(a);
}
#include<stdio.h>
#include<math.h> //这两个头文件因为已经由头文件包含过了,所以可以省略
#include"sqrt.h" //这里也要跟改正后的一致
void main()
{double a;
scanf("%lf",&a); //这里输入double类型的数,控制格式应为lf
printf("%f开方后的数是%f",a,f(a));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sqrt.cpp
double f(double a)
{a=sqrt(a);
return(a);
}
第二个文件改成如上,就是你重复包含头文件了,我知发现了这个错误,不知道还有别的没
double f(double a)
{a=sqrt(a);
return(a);
}
第二个文件改成如上,就是你重复包含头文件了,我知发现了这个错误,不知道还有别的没
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sqrt.cpp之后的内容应该在名为“sqrt.cpp”的文件中,该文件与主文件放在同一个文件夹中。
追问
是这样的啊,可是乱码啦.........
追答
主文件内容只包括:
include
#include
#include"sqrt.cpp"
void main()
{double a;
scanf("%f",&a);
printf("%f开方后的数是%f",a,f(a));
}
sqrt.cpp文件的内容只包括:
#include
#include
double f(double a)
{a=sqrt(a);
return(a);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询