四、浅谈C语言编译器执行过程及函数签名

C语言的编译器只是一个流处理器(Stream processor),它不关心代码是存放在哪里,甚至不看这个代码文件是什么,文件名是什么。
它只是做某种自动的检测(auto-detection,不关心),编译器在这个自动检测过程中做的唯一事情就是在自动检测的初始化文件中写到的事情,这个include只是把一个文件逐字逐句的插入来,就像复制粘贴一样,不会去看它什么名字,不管它是.c 还是 .cpp。
重写

在这里插入图片描述
如果先编译main.cpp 就不会报错,因为编译器采用的是c++的编译模式,支持C的;但要是先编译Main2.c 就报错,这时的编译器会采用C的编译模式,于是就识别不了class,报错。
简而言之,C编译器做的就是,获取一个大的旧文本流,假定他们是C或C语言编写,并将其转化为输出文件格式。

在C的编译过程中,如果遇到没有事先定义的函数调用,则先假定有那么个函数,并在编译过程中把那个函数的调用也正常的编译,因为,C编译器觉得在link中会有这个函数的定义,如果link里没有,则link时报错。
相反,C++编译器在编译时就报错,如下

//main.c
int foo<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值