C语言: 若不包含相应头文件,程序员可以定义与标准库函数同名的用户自定义函数,若如此,该函数将失去

C语言:若不包含相应头文件,程序员可以定义与标准库函数同名的用户自定义函数,若如此,该函数将失去原有意义,对不对,理由... C语言: 若不包含相应头文件,程序员可以定义与标准库函数同名的用户自定义函数,若如此,该函数将失去原有意义,对不对,理由 展开
 我来答
White_MouseYBZ
推荐于2018-07-08 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6442万
展开全部

当自定义尾数与库函数同名时,一般的调用是自定义函数优先,但标准库函数并不失去意义,只是调用方式要有所改变:即用::打头则调用库函数,直接写函数名则调用自定义函数。下面代码可以佐证——

#include "stdio.h"
void printf(void){
puts("12345");
}
int main(int argv,char *argc[]){
::printf("abc\n");//用::打头调用库函数printf
printf();//直接调用则默认自定义函数
return 0;
}

运行结果如下:

ylcqucc
推荐于2016-11-09 · TA获得超过1435个赞
知道小有建树答主
回答量:862
采纳率:0%
帮助的人:327万
展开全部
不是失去原有意义,是在你定义的范围内,以你定义的这个同名函数为主

相当于,你定义了一个全局变量,可是,在某个函数内,定义了一个同名的局部变量,在局部变量作用的范围内,以局部变量为主。
追问
用#include包含的头文件的后缀不可以是“.a”
追答
除非你自己建立一个.a的文件

理论上,#include可以包含任意类型的文件到程序中来,当然了,最常见的是头文件.h
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a3192048
2018-07-04 · TA获得超过164个赞
知道答主
回答量:60
采纳率:0%
帮助的人:10万
展开全部

首先题主这句话当然是对的。我来说下包含头文件的情况吧,先上正确结论:

“用户可以重新定义标准库函数,若重新定义,该函数将失去原有含义”。

如:

#include<stdio.h>
#include<math.h>

double fabs(double x)    //绝对值函数,这个函数与math.h中的fabs函数同名
{
if (x >= 0.0)
return x;
else
return -x;
}

double sqrt(double a)    //开平方函数,这个函数与math.h中的sqrt函数同名
{
double x1, x2;
x1 = a / 2.0;
x2 = (x1 + a / x1) / 2.0;
while (fabs(x2 - x1)>1e-6)
{
x1 = x2;
x2 = (x1 + a / x1) / 2.0;
}
return x1;
}

int main()
{

double x = 3.0;
printf("%.6lf\n", sqrt(x));
return 0;
}

上述代码正常运行。要注意的是:用户可以重新定义标准库函数,若重新定义,该函数将失去原有含义。
但定义必须和math.h中声明保持一致。如:

double fabs(double x)    //绝对值函数,这个函数与math.h中的fabs函数同名
{
if (x >= 0.0)
return x;
else
return -x;
}

修改为:

int fabs(double x)    //绝对值函数,这个函数与math.h中的fabs函数同名
{
if (x >= 0.0)
return x;
else
return -x;
}

就会报错了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式