关于“#include”与“#include"filename.h"”的区别,达人请入!

comshowboy 2004-06-29 08:22:00
今天我去参加一个公司的面试,一到公司什么也没有说,就给我了一套题目,叫我做。我都晕了,好久没有看过书了,当时头就蒙掉了,到现在头还有些晕!
对了,其中有一道题目我是第一次见到,是关于“#include<filename.h>”与“#include"filename.h"”的区别,平时在写程序的时候两个是一样呀,好象是通用的怎么还有区别呢?想了半天还是没有结果,最后不得不give up了!现在我就想请教一下各位大人这两者到底有什么区别呀?小弟在此拜谢了!
还有一个问题就是c++中调用被c编译器编译后的函数为什么要加上extern“c”声明呀?小弟是一个应届毕业生,c++也是自学的,所以有很多不懂,还请各位达人以后多多指教!谢谢了!
...全文
473 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
leebuilder 2004-06-30
  • 打赏
  • 举报
回复
问题1:用<>表示先从系统定义查找该头文件,用""表示先从你自己定义的头文件查找
问题2:extern "c"用来表示与c版本的兼容,并且编译的时候使用C的风格。
chatterley 2004-06-29
  • 打赏
  • 举报
回复
为什么用extern "C" 呢?因为C和C++对函数名伪码不一样,在c没有重载。在C++里有,比如
function(int,int);
function(float,float);
在C++下可能会转换成成_function_int_int和_function_float_float.而C下就比较简单。。。。
hwman 2004-06-29
  • 打赏
  • 举报
回复
1、搜索的路径不同。<>仅仅在系统指定的路径下面寻找,""会首先在源文件的路径查找,找不到就到系统路径中寻找
2、不用 extern "C" ,连接程序会找不到函数名的。
qwertasdfg123 2004-06-29
  • 打赏
  • 举报
回复
基础还是要的。
langzi8818 2004-06-29
  • 打赏
  • 举报
回复
不是重要,是基础哈
insulator 2004-06-29
  • 打赏
  • 举报
回复
怎么面试都问这些问题啊
这些很重要吗?
学习万物互联 2004-06-29
  • 打赏
  • 举报
回复
补充:
编译器预订义的缺省路径通常在
INCLUDE环境变量中指定.
freefalcon 2004-06-29
  • 打赏
  • 举报
回复
#include<filename.h>和#include"filename.h"的区别在于二者的搜索路径不一样,前者直接在编译器系统路径中搜索文件,后者是从工程的当前路径开始搜索,找不到文件再找系统路径,所以对于标准库文件用前者编译速度稍快一些

extern“c”指明该函数是用c语言写的,c语言写的函数和c++写的函数二者在对函数名的修饰上存在差异,不指明的话,编译器一般默认是c++方式
学习万物互联 2004-06-29
  • 打赏
  • 举报
回复
#include <filename.h>
表示编译器将首先到预定义的缺省路径下寻找文件
#include "filename.h"
表示编译器将到当前的目录下寻找文件,如果未找到到编译器预定义的缺省路径下寻找

前者用来包含标准头文件, 后者一般用来包含用户自定义的头文件,因为这些头文件一般放在
当前目录下.

因为C++编译器编译的函数名会进行变换的, 如果不加上extern "c"声明的话,
会导致c下函数无法被正确调用.

64,670

社区成员

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

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