VS项目开发中的配置

配置目录

1、定义:包含目录,库目录,附加包含目录,附加库目录,附加依赖项

  • 包含目录:寻找 #include<xxxx.h> 中的 xxxx.h 的搜索目录
  • 库目录:寻找 .lib 文件的搜索目录
  • 附加包含目录:寻找 #include<xxxx.h> 中的 xxxx.h 的搜索目录(每一项对应一个文件夹XXXX,文件夹中包含了编译时所需的头文件,使用时直接 #include<xxxx.h> 即可)
  • 附加库目录:寻找.lib文件的搜索目录
  • 附加依赖项:lib库(C++的库会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译之后,*.cpp, *.cc, *.c会被打包成一个.lib文件,这样可以保护源代码)

包含目录及库目录

附加包含目录
在这里插入图片描述
附加库目录
在这里插入图片描述
附加依赖项
在这里插入图片描述

2、包含目录和附加包含目录(库目录和附加库目录)的区别

  • 包含目录:修改了系统的include宏的值,是全局的
  • 附加包含目录:用于当前项目,对其他项目没有影响。

(库目录和附加库目录的区别同上)

3、开发中通用设置

  • 附加包含目录—添加工程的头文件目录:
    项目—>属性—>配置属性—> C/C++ —>常规—>附加包含目录:加上头文件的存放目录;
  • 附加库目录—添加文件引用的lib静态库路径:
    项目—>属性—>配置属性—>链接器—>常规—>附加库目录:加上lib文件的存放目录;
  • 附加依赖项—添加工程引用的lib文件名:
    项目—>属性—>配置属性—>链接器—>输入—>附加依赖项:加上lib文件名。当需要向项目中添加.dll动态链接库时,直接将需要添加的.dll文件拖拽到项目生成的.exe所在的文件夹下即可(项目—>属性—>配置属性—>常规—>输出目录,可以看到.exe生成在哪个目录下)

引用文件

1、各种文件的作用

.RC:资源定义文件。
.RC2:资源定义文件,供一些特殊情况下使用。
其它后缀:
.APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。资源辅助文件。
.BMP:位图资源文件。
.BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口中进行快速定位。用于浏览项目信息的,如果用source brower的话就必须有这个文件。可以在project options里去掉Generate Browse Info File,这样可以加快编译进度。
.C:用C语言编写的源代码文件。
.CLW:ClassWizard生成的用来存放类信息的文件。classwizard信息文件,ini文件的格式。
.CNT:用来定义帮助文件中“Contents”的结构。
.CPP或.CXX:用C++语言编写的源代码文件。
.CUR:光标资源文件。
.DEF:模块定义文件,供生成动态链接库时使用。
.DLG:定义对话框资源的独立文件。这种文件对于VC工程来说并非必需,因为VC一般把对话框资源放在.RC资源定义文件中。
.DSP:VC开发环境生成的工程文件,VC4及以前版本使用MAK文件来定义工程。项目文件,文本格式。
.DSW:VC开发环境生成的WorkSpace文件,用来把多个工程组织到一个WorkSpace中。工作区文件,与.dsp差不多。
.EXP:由LIB工具从DEF文件生成的输出文件,其中包含了函数和数据项目的输出信息,LINK工具将使用EXP文件来创建动态链接库。只有在编译DLL时才会生成,记录了DLL文件中的一些信息。
.H、.HPP或.HXX:用C/C++语言编写的头文件,通常用来定义数据类型,声明变量、函数、结构和类。
.HLP:Windows帮助文件。
.HM:在Help工程中,该文件定义了帮助文件与对话框、菜单或其它资源之间ID值的对应关系。
.HPJ:由Help Workshop生成的Help工程文件,用来控制Help文件的生成过程。
.HPG,生成帮助的文件的工程。
.ICO:图标资源文件。
.ILK:连接过程中生成的一种中间文件,只供LINK工具使用。
.INI:配置文件。
.LIB:库文件,LINK工具将使用它来连接各种输入库,以便最终生成EXE文件。
.LIC:用户许可证书文件,使用某些ActiveX控件时需要该文件。
.MAK:即MAKE文件,VC4及以前版本使用的工程文件,用来指定如何建立一个工程,VC6把MAK文件转换成DSP文件来处理。
.MAP:由LINK工具生成的一种文本文件,其中包含有被连接的程序的某些信息,例如程序中的组信息和公共符号信息等。执行文件的映像信息记录文件。
.MDP:旧版本的项目文件,相当于.dsp
.NCB:NCB是“No Compile Browser”的缩写,其中存放了供ClassView、WizardBar和Component Gallery使用的信息,由VC开发环境自动生成。无编译浏览文件。当自动完成功能出问题时可以删除此文件。编译工程后会自动生成。
.OBJ:由编译器或汇编工具生成的目标文件,是模块的二进制中间文件。
.ODL:用对象描述语言编写的源代码文件,VC用它来生成TLB文件。
.OLB:带有类型库资源的一种特殊的动态链接库,也叫对象库文件。
.OPT:VC开发环境自动生成的用来存放WorkSpace中各种选项的文件。工程关于开发环境的参数文件。如工具条位置信息等。
.PBI、.PBO和.PBT:由VC的性能分析工具PROFILE生成并使用的三种文件。
.PCH:预编译头文件,比较大,由编译器在建立工程时自动生成,其中存放有工程中已经编译的部分代码,在以后建立工程时不再重新编译这些代码,以便加快整个编译过程的速度。
.PDB:程序数据库文件,在建立工程时自动生成,其中存放程序的各种信息,用来加快调试过程的速度。记录了程序有关的一些数据和调试信息。
.PLG:编译信息文件,编译时的error和warning信息文件。
.RC:资源定义文件。
.RC2:资源定义文件,供一些特殊情况下使用。
.REG:注册表信息文件。
.RES:二进制资源文件,资源编译器编译资源定义文件后即生成RES文件。
.RTF:Rich Text Format(丰富文本格式)文档,可由Word或写字板来创建,常被用来生成Help文件。
.SBR:VC编译器为每个OBJ文件生成的原始浏览信息文件,浏览信息维护工具(BSCMAKE)将利用SBR文件来生成BSC文件。
.TLB:OLE库文件,其中存放了OLE自动化对象的数据类型、模块和接口定义,自动化服务器通过TLB文件就能了解自动化对象的使用方法。
.WAV:声音资源文件。

2、dll和lib的输出目录

  • 设置dll输出路径方法:
    右键项目的"属性"—>连接器—>常规,然后在常规属性界面中的 “输出文件” 中填入自己想要dll文件的输出路径。
    在这里插入图片描述

  • 设置lib 输出路径方法:
    右键项目的"属性"—>连接器—>高级,然后在高级属性界面中的 “导入库” 项中填入自己想要lib文件的输出路径。
    在这里插入图片描述

宏定义

#define				定义一个预处理宏
#undef				取消宏的定义

#if					编译预处理中的条件命令,相当于C语法中的if语句
#ifdef				判断某个宏是否被定义,若已定义,执行随后的语句
#ifndef				与#ifdef相反,判断某个宏是否未被定义
#elif				若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if
#else				与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语法中的else
#endif				#if, #ifdef, #ifndef这些条件命令的结束标志.
  • 01: 防止一个头文件被重复包含
#ifndef COMDEF_H
#define COMDEF_H
//头文件内容
#endif
  • 02: 重新定义一些类型
    防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。
typedef  unsigned char      boolean;     /* Boolean value type. */
typedef  unsigned long int  uint32;      /* Unsigned 32 bit value */
typedef  unsigned short     uint16;      /* Unsigned 16 bit value */
typedef  unsigned char      uint8;       /* Unsigned 8  bit value */
typedef  signed long int    int32;       /* Signed 32 bit value */
typedef  signed short       int16;       /* Signed 16 bit value */
typedef  signed char        int8;        /* Signed 8  bit value */
//下面的不建议使用
typedef  unsigned char     byte;         /* Unsigned 8  bit value type. */
typedef  unsigned short    word;         /* Unsinged 16 bit value type. */
typedef  unsigned long     dword;        /* Unsigned 32 bit value type. */
typedef  unsigned char     uint1;        /* Unsigned 8  bit value type. */
typedef  unsigned short    uint2;        /* Unsigned 16 bit value type. */
typedef  unsigned long     uint4;        /* Unsigned 32 bit value type. */
typedef  signed char       int1;         /* Signed 8  bit value type. */
typedef  signed short      int2;         /* Signed 16 bit value type. */
typedef  long int          int4;         /* Signed 32 bit value type. */
typedef  signed long       sint31;       /* Signed 32 bit value */
typedef  signed short      sint15;       /* Signed 16 bit value */
typedef  signed char       sint7;        /* Signed 8  bit value */
  • 03: 求最大值和最小值
#define  MAX(x,y) (((x)>(y)) ? (x) : (y))
#define  MIN(x,y) (((x) < (y)) ? (x) : (y))
  • 04: 得到一个变量的地址(word宽度)
#define B_PTR(var)  ((byte *) (void *) &(var))
#define W_PTR(var)  ((word *) (void *) &(var))
  • 05: 将一个字母转换为大写
#define UPCASE(c) (((c)>='a' && (c) <= 'z') ? ((c)0×20) : (c))
  • 06: 返回数组元素的个数
#define ARR_SIZE(a)  (sizeof((a))/sizeof((a[0])))
  • 07: 使用一些宏跟踪调试
    ANSI标准说明了五个预定义的宏名。它们是:
__LINE__
__FILE__
__DATE__
__TIME__
__STDC__
//C++中还定义了 
__cplusplus

如果编译器不是标准的,则可能仅支持以上宏名中的几个,或根本不支持。记住编译程序也许还提供其它预定义的宏名。

  • __ LINE __ 及 __ FILE __ 宏指示,#line指令可以改变它的值,简单的讲,编译时,它们包含程序的当前行数和文件名。
  • __ DATE __ 宏指令含有形式为月/日/年的串,表示源文件被翻译到代码时的日期。
  • __ TIME __ 宏指令包含程序编译的时间。时间用字符串表示,其形式为: 分:秒
  • __ STDC __ 宏指令的意义是编译时定义的。一般来讲,如果__ STDC __已经定义,编译器将仅接受不包含任何非标准扩展的标准C/C++代码。如果实现是标准的,则宏__STDC__含有十进制常量1。如果它含有任何其它数,则实现是非标准的。
  • __cplusplus 与标准c++一致的编译器把它定义为一个包含至少6为的数值。与标准c++不一致的编译器将使用具有5位或更少的数值。

可以定义宏,例如:
当定义了_DEBUG,输出数据信息和所在文件所在行

#ifdef _DEBUG
#define DEBUGMSG(msg,date) printf(msg);printf(%d%d%d”,date,_LINE_,_FILE_)
#else
#define DEBUGMSG(msg,date)
#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值