关于#include预处理问题
我在写作业时遇到一个问题(偶然发现的)在DEV C++中如果源代码后缀为.cpp在未包含math.h头文件时是不可以调用pow函数的
但是把后缀改成.c就不会存在这个问题,会有警告 incompatible implicit declaration of built-in function 'pow'
百度上我搜索过,搜到答案如下:
https://zhidao.baidu.com/question/310052611.html
(截图放不上来抱歉)
但是为什么不写#include <math.h>能不能调用会与文件后缀有关呢?
#include <stdio.h>
int main()
{
unsigned long long sum=0,temp=1,weight,i;
for(i=0;i<64;i++)
{
temp=pow(2,i);
sum=sum+temp;
}
weight=sum/25000;
printf("舍罕王应该给予达依尔%llu粒麦子\n如果每25000粒麦子为1kg,那么应该给%llu公斤麦子\n",sum,weight);
}
希望能获得各位老师的解答,万分感谢! 这个跟编译器的处理有关系吧 shake_a_tree@16 发表于 2019-6-3 17:58
这个跟编译器的处理有关系吧
emmmmm可是我用的都是DEV呀,我从知道可以不包含的时候就一直不写那一行代码,今天保存的时候忘记改后缀了才无法编译发现这个问题 因为gcc 与g++是两个程序,对应.c和.cpp,处理上可能略微不同,math.h是C库中的,cpp中应该是#include <cmath> 这个和你写代码影响不大的 稽20疯会 发表于 2019-6-3 18:00
emmmmm可是我用的都是DEV呀,我从知道可以不包含的时候就一直不写那一行代码,今天保存的时候忘记改后缀 ...
同一个编译器对不同文件的处理不一样啊。CPP文件虽然兼容C文件哎,但两者毕竟是不一样的。 Krant5 发表于 2019-6-3 18:00
因为gcc 与g++是两个程序,对应.c和.cpp,处理上可能略微不同,math.h是C库中的,cpp中应该是#include这个 ...
我把后缀改成.cpp后加上#include<math.h>后也可以正常编译执行,请问这是编译器自动纠错码 shake_a_tree@16 发表于 2019-6-3 18:02
同一个编译器对不同文件的处理不一样啊。CPP文件虽然兼容C文件哎,但两者毕竟是不一样的。
好的,非常感谢您
页:
[1]