VC6的一些实用技巧

   VC6作为一种非常老的程序开发环境,还是受到了不少程序爱好者的喜爱。由于项目开发一直存在C++模块,所以,用VC也就成为了工作的一部分。不过说起对于vc6 IDE工具的熟练,很大程度上是来自于近来,对于log4cpp开源代码的持续研究上。log4cpp在vc6上建立的有各种工程,但是,真正的主干源码只有一份,工程均是引用到相同的头文件和源代码,而又根据自身特色输出不同的工程目标,例如dll或exe或静态库。另外,在多工程里面也可以方便在IDE环境里面进行开源代码的学习

  VC6 IDE存在工作空间的概念,在一个workspace中你可以建立多个不同的工程,这些工程或者相互依赖,或者之间有些逻辑上的联系,在一个工作空间中进行打开,可以方便代码的浏览。对于已经存在的工程,也可以通过project菜单insert project into workspace的方法,加入空间来。这样很多时候,就可以利用一个工作空间来查看几个工程,而不是每个工程打开一个workspace,对于有相互联系的工程来讲,就更是一种浪费了。对于在project菜单中设置工程之间的依赖关系,一是工程之间编译上某种关系,可以利用工程依赖,进行决定,二是工程之间在代码层面的依赖,一个工程依赖的另外一个工程时动态链接库或者是静态库。

  特别低,对于依赖动态链接库工程,可以很方便的实现,工程自动连接release版或者debug版的dll,比起手工设置工程选项真是不知道要强多少倍。在VC6中建立的工程区分了静态库和动态库,今天没有太了解工程依赖的本质,就贸然地让一个DLL工程依赖于一个exe的工程,想着是可以工程之间依赖后就可以共享代码和链接,但是,不幸的是,虽然加了引用头文件能够编译通过,但是链接的时间,就遭遇了找不到指定符号的问题。思索良久,苦于对于VC6知识的不全面性,不知道解决办法,遂又拿出来log4cpp观察观察,才发现,他那边能够实现的一个运行良好的工程依赖,是exe对于一个log4cpp静态库的依赖,这一下就豁然开朗了!工程依赖的秘密就在于前面所理解的,编译顺序依赖和代码依赖,而代码依赖只能是某种库的形式!

 

1、在VC6中如果想看到调用关系,可以使用alt+f12键,编译出*.bsc出来,就可以看有关调用关系和使用地方。虽然vc助手也可以提供相同的功能,但是寸有所长尺有所短,在看调用关系知识时,我倾向于用alt+f12。

2、在project  setting中,如果设置值相同,可以通过一次设置全部或者某些部分进行批量操作,而不必是一个个设置,也容易出错

3、在build菜单下,可以设置当前活动的工程,此选项在多工程的工作空间中更是经常使用

4、VC6建立c语言工程可以通过console工程,过程中选择建立一个空工程。这样一种曲线救国的方式,在于指定了工程的目标,例如,你在一个.c文件中加入main的声明,将会编译出来一个c语言程序出来。c语言程序中main函数的声明为int main(int argc, char* argv[])。由于经常拷贝粘贴代码,不一定能够一下子想的起来,还是记在文档中

5、extern "C"是为了指明c++程序使用c语言函数或结构体时,不要进行符号重编码,在c++特别是因为重载函数这种机制,几乎使得函数名在编译时被修改为内部的名字为常态。加入extern "C"后,就可以阻止这个过程的发生。其中通过extern "C" {}的机制可以批量地设置一批。例如,在c的头文件中,通过预编译指令

#ifdef __cplusplus
extern "C" {
#endif

/*声明的代码等*/
int y(int b);
#ifdef __cplusplus
}
#endif

通过此预编译指令形式,不是必须的,但是在c语言自身和c++都会用的时间,就功效很大了,可以比较好的自适应,这也是条件编译指令的最大用途。

6、在头文件中,定义头文件自身的宏定义,可以避免头文件的重复包含

#if !defined(_X_H__)
#define _X_H__

/*some code*/

#endif

 

7、头文件和源代码对于自己的include,应该秉承最小引用原则,因为头文件和源文件所使用到语言符号是各不相同的,所以,到底include不include一些头文件,就看是否使用到了。当然,也有些时候,为了某种便捷,即使此头文件不使用,但是此文件会被后续的大多数都引用到,也会将其加入。体现编程原则中很重要的原则“去除重复”,重复是万恶之源。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值