49 CPP编译预处理 | 您所在的位置:网站首页 › 编译cpp文件的命令 › 49 CPP编译预处理 |
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 实验室设备网 版权所有 |