分享
 
 
 

如何学习VC开发WINDOWS程序讨论(二)

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

我的朋友经过一晚的学习,继续和我讨论。

B:问你几个问题吧!

WinMain()函数的调用约定是PASCAL。什么是约定啊?不算很理解,PASCAL不是一种语言吗?和c有什么关系啊?

A:在这里PASCAL是一个调用约定,由于这种方式最早由PASCAL采用,所以这么叫。

在MSDN中的C++ Language Reference中,Calling Conventions这一章都是讲调用约定的。

约定:微软重定义了许多约定类型,为的是可以让代码更容易跨平台或者跨编译器。

其实,调用约定要解决两个问题,都是针对堆栈操作:

1。参数传递的顺序(本质是压栈的顺序)

2。谁负责平栈(调用者还是调用对象)

目前你只要搞清楚一个函数的声明、定义和实现中的调用方式必须一致!

(高手不要和我较汁,这是给新手看的,fastcall以后再说)

B:我在看你写的,我要慢慢琢磨啦,哈哈

“目前你只要搞清楚一个函数的声明、定义和实现中的调用方式必须一致!”我现在明白,你说的什么堆栈,压栈,平栈什么玩意不明白了:(

A:所以我说你只要搞清。。。

其他不着急

B:?

whie(GetMessage(&msg,Null,0,0))

{

...

}

是循环得到win98发给他的消息是吧?&msg这个引用是什么玩意?啊

A:msg是一个结构,内部包含消息的各种必要参数。GetMessage得到msg的地址以后,回填这些内容。

B:那 等于是给了一个msg这个结构的引用,哦

A:是的,不过对于c程序员来说,你看问题的角度最好调整一下。

所有的东西你要理解到底是什么!特别是各种指针和引用。

B:怎么调整呢?往哪个方向啊

A:也就是说你尽量搞明白任何东西最终在内存中是什么样的。

比如引用,就是传递了被引用对象的起始地址。

B:内存?还真不明白,我会好好看的。

引用也是地址吗?

指针不是地址吗?引用不就是一个复制的对象吗?

A:在c++中,引用就是传递该对象的起始地址,所有类型都可以引用。

在c++中,引用其实可以用取地址代替。

例如,我们要实现在函数中将变量加1:

//传递引用

void Inc(int &nValue)

{

nValue++;

}

//传递指针

void Inc2(int* pValue)

{

(*pValue)++;

}

//调用

int n = 0;

Inc(n);

Inc2(&n);

这两种方法效果是一样的,你要体会一下。其实在c++中,引用和取地址用的是同一个符号"&".

B:Inc的参数是引用类型啊,为什么不Inc(&n)啊?

Inc2的参数是指针,为什么不Inc2(*n);

B:Inc2(&n);我明白了

是把n用&取地址,也就是指针的了是吧?

Inc的使用不明白

A:

void Inc(int &nValue);

声明的是传递引用,所以直接把东西给函数就行了,编译器知道函数中使用的都是原来那个对象,所以你直接改那个对象,外面的值就变了。这其实是把取地址的问题交给编译器完成了。

void Inc2(int* pValue);

声明传递地址,那么你当然要取出地址传递过去。

B:现在有几个难明白的:

约定,宏,还有win怎么和别的程序基本的数据类型不一样?

A:约定我们讲过了

宏:直接找的宏的实现看看就可以了。

装一个VisualAssist,光标放在宏上面以后就可以看到宏的定义,还可以go过去。

B:知道了

A:

基本数据类型:这个是由语言决定的,微软不能随便改。

但是目前的c/c++标准中,各种数据类型的宽度是会随平台改变的,而没有定义绝对的数据类型,所以微软用宏定义扩展了许多绝对数据类型。

例如我们需要一个4字节宽度的绝对数据类型DWORD,那么在目前32位平台下,微软就typedef unsigned long DWORD,到了64位平台上可能就是typedef unsigned int DWORD

这样,只要换一份定义文件,所有源代码就可以直接移植。

B:懂的那么透彻了,明白了,真佩服你!!!

A:我要写程序去了,白白。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有