49 CPP编译预处理 您所在的位置:网站首页 编译cpp文件的命令 49 CPP编译预处理

49 CPP编译预处理

2023-01-02 09:44| 来源: 网络整理| 查看: 265

C++程序编译的过程:预处理->编译(优化、汇编)->链接

预处理与程序员的关系比较大

预处理指令主要有以下三种:

- 包含头文件:#include

- 宏定义:#define (定义宏)、#undef (删除宏)

- 条件编译:#ifdef、#ifndef

1)包含头文件

#include 包含头文件有两种方式:

#include :直接从编译器自带的函数库目录中寻找文件。#include "文件名":先从自定义的目录中寻找文件,如果找不到,再从编译器自带的函数库目录中寻找.

#include也包含其它文件,如:*.h、*。cpp或其它 的文件。

C++98标准后的头文件:

C的标准库:老版本的有.h后缀;新版本没有.h的后缀,增加了字符c的前缀。例如:老版本是,新版本是,新老版本库中的内容是一样的。在程序中,不指定std命名空间也能使用库中内容。C++的标准库:老版本的有.h后缀;新版本没有.h的后缀。例如:老版本是,新版本是,老版本已弃用,只能用新版本。在程序中,必须指定std命名空间才能使用库中的内容。

注意:用户自定义的头文件还是可以用.h为后缀的

include包含文件的本质是把需要包含的文件的内容复制进来。

2)宏定义指令

无参数的宏:#define 宏名 宏内容

有参数的宏:#define MAX(x,y) ((x)>(y)?(x):(y))

编译的时候,编译器把程序中的宏名用宏内容替换,是为宏展开(宏替换)。

宏可以只有宏名,没有宏内容

在C++中,内联函数可以代替有参数的宏,效果更好。

C++常用的宏:

当前源代码文件名:__FILE__当前源代码函数名:__FUNCTION__当前源代码行号:__LINE__编译的日期:__DATE__编译的时间:__TIME__编译的时间戳:__TIMESTAMP__当用C++编译程序时,宏__cplusplus就会被定义 #include using namespace std; #define BH 3 #define MESSAGE "hello world" void test() { cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有