一.变量的命名约定
由于windows程序很长,编程人员在一段时间后自己可能忘记所定义变量的含义。为了帮助记忆和区分变量,微软创建了windows的命名约定,称为匈牙利表示法。匈牙利表示法提供了一组前缀字符,如下(彩色表示常用的):
前缀 | 含义 |
---|---|
a |
数组 |
b |
布尔值 |
by | 无符号字节 |
c |
字节 |
cb | 字节记数 |
rgb |
rgb颜色长整型 |
cx,xy | 计算x和y长度的短整形 |
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.<>和“”有什么区别呢?
1⃣️他们的区别在于编译器搜索头文件的顺序不同:
<>表示从系统目录下开始搜索,再搜索PATH环境变量所列出的目录,不搜索程序的当前目录。
“”表示先从当前目录搜索,然后搜索系统目录,再是PATH环境变量列出的目录
2⃣️防止头文件被重复引用
引申[1]
3.头文件被重复包含的解决办法
如果一个头文件,被一个工程的很多类所包含,那么编译器会报错:头文件被重复定义。两种解决办法:
第一种:
使用#ifndef
和#define
和#endif
[cpp]
#ifndef HAVEDDEFINE
#define HAVEDDEFINE
class animal
{
public:
animal();
~animal();
}
#endif
在类第一次包含此头文件,判断是否还没定义HAVEDDEFINE,如果没有返回为真,就往下执行,定义#define HAVEDDEFINE,然后执行到#endif结束;第二次包含此头文件,判断是否还没定义HAVEDDEFINE,因为已经定义了HAVEDDEFINE,条件判断返回为假,就直接跳到#endif结束,不执行中间的代码。
第二种:
使用#pragma once
[cpp]
#pragma once
class animal
{
public:
animal();
~animal();
}
编译器执行到pragma once会只包含一次
三.程序的编译链接过程
**在编译时 **:
1.由预处理器对预处理指令(#include,#define和#if)进行处理,结果是在内存中输出翻译单元(一种临时文件)
2.由编译器接受预处理的输出,将源代码转换成包含机器语言指令的三个目标文件(扩展名为obj的文件)
注意:在以上两个编译的过程中,头文件不参与编译
** 在链接时**:
3.将目标文件和你所用到的c++类库文件(.lib)一起链接生成可执行程序exe
如下图:
-
include 与 import的区别 一般来说,在导入 Objective-C 头文件的时候使用 #import,包含 C 头文件时使用 #include ↩