美文网首页
C++基础11:变量的命名约定 头文件的问题 程序的预处理编译链

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

作者: YBshone | 来源:发表于2017-01-23 15:35 被阅读0次

一.变量的命名约定

由于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

如下图:


C++基础.png
  1. include 与 import的区别 一般来说,在导入 Objective-C 头文件的时候使用 #import,包含 C 头文件时使用 #include

相关文章

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

    一.变量的命名约定 由于windows程序很长,编程人员在一段时间后自己可能忘记所定义变量的含义。为了帮助记忆和区...

  • C++重复包含头文件坏处

    为什么要避免头文件重复包含呢? 1.我们知道在编译c或c++程序时候,编译器首先要对程序进行预处理,预处理其...

  • C语言学习笔记

    1. C程序编译 C程序的编译可以简单分为4个步骤:预处理,编译,汇编,。 预处理 展开头文件·删除注释,条件编译...

  • c++ prime第五版第二章练习

    复习题 C++程序的模块叫什么? 库 下面的预处理编译指令是做什么用的? #include 包含头文件,使外部程序...

  • C++详解预处理

    C/C++编译系统编译程序的过程为预处理、编译、链接。预处理器是在程序源文件被编译之前根据预处理指令对程序源文件进...

  • C/C++程序编译、链接和装入

    C++程序编译过程(以g++为例) 预处理 处理#开始的命令,得到不包含#指令的.i文件,包括替换宏、引入头文件...

  • 重新认识C++

    C++ 程序的生命周期 编码、预处理、编译和运行 在编译的过程中,编译器还会根据 C++ 语言规则检查程序的语法、...

  • C基础(1)

    程序运行过程如下: 预处理, 展开头文件/宏替换/去掉注释/条件编译 (...

  • 1.C++基础

    C++头文件 传统C头文件C++头文件hpp文件 命名空间 C++ 引入了新的概念,命名空间可以有效避免大型项目的...

  • 预处理知识相关

    预处理也称为预编译,它为编译做预备工作,主要进行代码文本的替换工作,用于处理#开头的指令。 1. C/C++头文件...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/uqyabttx.html