预编译处理

简介: 预编译处理

1、#include指令(文件包含指令)


方式:


①#include <filename>:按标准方式搜索,文件位于系统目录的include子目录下,一般用于包含例如iostream之类的头文件


②#include "filename":首先在当前目录搜索,若没有,再按标准方式搜索,一般用于包含自定义头文件


2、#define与#undef指令


①#define的作用:


定义符号常量,例如:#define PI 3.14表示定义了一个符号常量PI的值为3.14

声明定义,例如:#define __HEAD_H__表示在此处定义了_HEAD_H


②#undef的作用:删除由#define定义的宏,使之失效


3、条件编译指令


只对满足条件的代码进行编译,将不满足条件的代码舍弃,以达到优化代码的目的



/*
当常量表达式constexpr_1非零时编译程序段codeSegment_1,
否则当常量表达式constexpr_2非零时编译程序段codeSegment_2,
若constexpr_1和constexpr_2都为零,则编译程序段codeSegment_3
*/
#if constexpr_1
    codeSegment_1
#elif constexpr_2
    codeSegment_2
#else
    codeSegment_3
#endif



/*
若标识符identifier已经被#define定义过,则编译程序段codeSegment_1,
否则编译程序段codeSegment_2
*/
#ifdef identifier
    codeSegment_1
#else
    codeSegment_2
#endif



/*
若标识符identifier未被#define定义过,则编译程序段codeSegment_1,
否则编译程序段codeSegment_2
*/
#ifndef identifier
    codeSegment_1
#else
    codeSegment_2
#endif


4、defined操作符


defined是一个操作符,不是指令,所以不需要以#开头,使用方式:defined(identifier)


作用:#ifndef __HEAD_H__等价于#if!defined(__HEAD_H__)


5、预编译处理在工程上的应用


通常在一个工程的头文件中会加上如下预编译指令,来防止重复包含和重复定义


//head.h
#ifndef __HEAD_H__
#define __HEAD_H__
codeSegment
#endif


相关文章
|
9月前
|
SQL Oracle 关系型数据库
SQL中,有效防止like的SQL注入,使用预编译SQL(?)写法
SQL中,有效防止like的SQL注入,使用预编译SQL(?)写法
130 0
|
6月前
|
存储 程序员 编译器
宏(预编译)详解
宏(预编译)详解
|
11月前
|
JavaScript Go
脚本的预编译
脚本的预编译
43 0
|
11月前
|
Go
函数调用的预编译
函数调用的预编译
48 0
|
存储 自然语言处理 编译器
【C语言】程序环境和预编译
【C语言】程序环境和预编译
|
SQL 存储 缓存
sql 预编译
sql 预编译
181 0
|
编译器
预编译的代码
预编译的代码
78 0
|
JavaScript Go
重学预编译
重学预编译
82 0
|
JavaScript 前端开发 C#
JavaScript脚本预编译成字节码
本文主要介绍JavaScript脚本预编译成字节码的方法,适用于加密脚本代码
580 0
JavaScript脚本预编译成字节码

热门文章

最新文章