美文网首页
头文件 & 预编译指令

头文件 & 预编译指令

作者: 我阿郑 | 来源:发表于2021-12-22 11:40 被阅读0次

一、#include指令的原理

编译器在处理每个cpp之前,首先进行一个预处理:将所有的#include行替换成头文件的具体内容,形成一个中间文件,然后再对这个中间文件进行编译。

这个在编译之前的预处理过程 ,称为“预编译”过程。

注:如果头文件里还有#include,则反复替换,直到没有任何#include指令为止。

image.png

二、预处理指令

预处理指令不是语句,行尾不要加分号

// #define代入的是文本,而不是值
// 只要把文本原番不动地代入后,检查一下语法是否正确,程序是否合乎逻辑
#define PI 3.14  
#define  MAX(a,b)  a>b ? a : b

// 要定义一个值,通常外加一个小括号
#define  MUL  (1 + 2)

#define的取代办法

在程序中应该尽量少用这两种#define

取代的办法是:

(1) 定义变量或const常量

     const double PI = 3.14;

(2) 定义inline函数

     inline int max(int a, int b)
     {
         return  a>b ? a: b;
     }

三、头文件与源文件分离

class的分离式写法

class的成员函数的定义写在class之外,即class的大括号的外面

///////////  main.cpp ////////////
class Object
{
public:
   int x;
   void Test(); // (1) 成员函数的声明
};
void Object::Test() //(2) 成员函数写在外边,加上类名限定
{
}

这种写法:

  • 成员变量:还是写在类里面
  • 成员函数:在类里保留其函数声明,而函数的定义写在类体之外。
  • 写在外面的时候,要加上类名限定(Object::)
    其中,::可以理解为是表示范围的符号

分开为头文件和源文件

按照一贯的原则:类型定义写在头文件.h里,函数实现写在源文件.cpp

///////////  Object.h ////////////
class Object
{
public:
   int x;
   void Test();
};

///////////  Object.cpp ////////////

#include <stdio.h>
#include "Object.h"

void Object::Test() 
{
    printf("x is %d \n", x); // 仍然可以省略this->
}

相关文章

  • C语言中预编译指令

    基本预编译指令#include 将指定头文件嵌入源文件中。#define 宏定义 条件预编译指令 (#ifdef...

  • C++入

    一: #include 预编译指令 头文件 int main() 为程序的入口 标准输出指令: cout 标准...

  • 头文件 & 预编译指令

    一、#include指令的原理 编译器在处理每个cpp之前,首先进行一个预处理:将所有的#include行替换成头...

  • 预处理器

    头文件包含 条件编译 诊断 #pragma指令 例如:#pragma mark -#pragma mark 标签名...

  • 1. C语言的编译步骤

    1. C语言的编译步骤 1.1 预处理 带#的语句就是预处理指令, 预处理指令在预处理的时候处理了 头文件展开: ...

  • # include

    用预编译指令#include的目的是将所需要的“头文件”包括到用户源文件中。在头文件中包含了所需调用的函数的有...

  • 01-#import、#include和@class有什么区别

    #import #import是Objective-C导入头文件的关键字 ,是一个预编译指令 ,将文件内容包...

  • 预处理知识相关

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

  • 开始C++

    进入C++ 1.当头文件不以 .h 结尾时,使用空间名称编译指令 using 来使 iostream 中的定义对程...

  • #include #import @class 的区别

    #include C/C++中导入头文件的预编译指令 1. #include"A.h" 在用户自己的目录下寻找文件...

网友评论

      本文标题:头文件 & 预编译指令

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