c++基础11:变量的命名约定 头文件的问题 程序的预处理编译链接过程

一.变量的命名约定

由于windows程序很长,编程人员在一段时间后自己可能忘记所定义变量的含义。为了帮助记忆和区分变量,微软创建了windows的命名约定,称为匈牙利表示法。匈牙利表示法提供了一组前缀字符,如下(红色表示常用的):

前缀

含义

a

数组

b

布尔值

by

无符号字节

c

字节

cb

字节记数

rgb

rgb颜色的长整型

cx,xy

计算x和y长度的短整形

dw

无符号长整形

fn

函数

h

句柄

i

整数

m_

成员变量

n

短整形

np

近指针

p

指针

l

长整形

lp

长指针

s

字符串

sz

以零结束的字符串

tm

正文大小

w

无符号整形

x,y

表示x或y坐标的无符号整形

 

 二.头文件

1.包含头文件方式:

#include<iostream.h>

#include"myselfdefine.h"

 

2.<>和“”有什么区别呢?

他们的区别在于编译器搜索头文件的顺序不同:

<>表示从系统目录下开始搜索,再搜索PATH环境变量所列出的目录,不搜索程序的当前目录。

“”表示先从当前目录搜索,然后搜索系统目录,再是PATH环境变量列出的目录

 

3.头文件被重复包含的解决办法

如果一个头文件,被一个工程的很多类所包含,那么编译器会报错:头文件被重复定义。两种解决办法:

第一种:

使用#ifndef 和#define和#endif

#ifndef HAVEDDEFINE
#define HAVEDDEFINE
class animal
{
    public:
     animal();
     ~animal();
}
#endif

在类第一次包含此头文件,判断是否还没定义HAVEDDEFINE,如果没有返回为真,就往下执行,定义#define HAVEDDEFINE,然后执行到#endif结束;第二次包含此头文件,判断是否还没定义HAVEDDEFINE,因为已经定义了HAVEDDEFINE,条件判断返回为假,就直接跳到#endif结束,不执行中间的代码。

 

第二种:

使用#pragma once

#pragma once
class animal
{
    public:
     animal();
     ~animal();
}

编译器执行到pragma once会只包含一次

 

 三.程序的编译链接过程

在编译时 :

 1.由预处理器对预处理指令(#include,#define和#if)进行处理,结果是在内存中输出翻译单元(一种临时文件)

 2.由编译器接受预处理的输出,将源代码转换成包含机器语言指令的三个目标文件(扩展名为obj的文件)

注意:在以上两个编译的过程中,头文件不参与编译

 在链接时:

3.将目标文件和你所用到的c++类库文件(.lib)一起链接生成可执行程序exe

 如下图:

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值