剁椒清蒸鲈鱼家常做法:C++编程新手错误语录
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 21:59:18
精华:C++编程新手错误语录(续一)
出处:PConline 2005年09月08日 作者:宋宝华 责任编辑:moningfeng
文章导读:C++编程新手错误语录(续一)即便是在C语言中,add函数被多数C编译器编译后在符号库中的名字也不是add,而是_add。而在C++编译器中,int add(int x,int y)会编译成类似_add_int_int这样的名字(称为“mangled name”),float add(float x,float y)则被编译成_add_float _float,mangled name包含了函数名、函数参数数量及类型信息,C++依靠这种机制来实现函数重载。
所以,在C++中,本质上int add( int x, int y )与float add( float x, float y )是两个完全不同的函数,只是在用户看来其同名而已。
这就要求初学者们能透过语法现象看问题本质。本质上,语言的创造者们就是在玩各种各样的花样,以使语言具备某种能力,譬如mangled name花样的目的在于使C++支持重载。而C语言没有玩这样的花样,所以int add( int x, int y )与float add( float x, float y )不能在C程序中同时存在。
(10)“没见过在C语言中调用C++的函数”、“C/C++不能调用Basic、Pascal语言的函数”
这又是一个奇天下之大怪的问题,“打死我都不相信C、C++、basic、pascal的函数能瞎调来调去”,可是有句话这么说:
没有你见不到的,只有你想不到的!
既然芙蓉姐姐也有其闻名天下的道理,那么C、C++、Basic、Pascal的函数为什么就不能互相调用呢?
能!
你可以用Visual C++写一个DLL在Visual Basic、Delphi(Pascal的孙子,Object Pascal的儿子)中调用,也可以在Visual Basic、Delphi中写一个DLL在Visual C++中调用不是?
让我们来透过现象看本质。首先看看函数的调用约定(以Visual C++来说明):
(1) _stdcall调用
_stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈。
WIN32 Api都采用_stdcall调用方式,这样的宏定义说明了问题:
#define WINAPI _stdcall
按C编译方式,_stdcall调用约定在输出函数名前面加下划线,后面加“@”符号和参数的字节数,形如_functionname@number。[1] [2] [3] [4] [5] [6] >>继续下一页
新手求教.!C编程.
哪位高手能介绍一下C语言新手编程时常出的错误?
这段网页编程有啥错误呢?我是新手。
关于C语言的图形编程错误
C编程,大家帮我看看错误。
在c编程后的错误!
C编程的时候出现的错误!!
使用C语言编程时,运行出现这个错误,
C语言编程时 都有什么样的错误提示
新手学编程,学哪种好?
编程新手请教前辈
PASCAL新手编程
linux编程,新手提问
新手新学编程
新手学习编程问题
学习编程入门新手想选几本书谢谢帮助(C语言)
c编程!!!!!!!!
C语言问题为什么它说我有错误呢?琢磨不透啊`新手
powerbuider 新手 没有编程经验
使用C语言编程时,运行出现这个错误,大家帮忙看是什么问题。
VC编程错误【急】
VB编程错误
查找编程错误?
vc编程错误,指教