码迷,mamicode.com
首页 > 编程语言 > 详细

C语言中的预处理命令

时间:2018-10-13 10:56:38      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:https   c语言程序   target   语法   编译器   字符   调试   fine   span   

预处理功能是C语言的重要功能。

 

问:为什么要预处理,什么是预处理?

答:我们知道高级语言的运行过程是通过编译程序(编译器)把源代码翻译成机器语言,实现运行的。编译程序的工作包含:语法分析、词法分析、代码生成、代码优化等。但是在正式编译之前还有一些工作要做,例如:去掉注释、变换格式之类的。C语言允许在源程序中包含预处理命令,正式编译(词法分析)前,先对这些命令进行“预处理”;然后在进行通常的编译处理。预处理命令从语法上讲不是C语言的一部分,但扩展了C语言程序设计的环境,简化程序开发过程;有利于移植和调试C语言程序。

 

预处理命令的定义:

以#开头,换行符结尾的行称为预处理命令;预处理命令不是C语言的语法成分,而是传给编译程序的各种指令;预处理命令分为三种:宏定义、文件包含、条件编译

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

宏定义

定义一个标识符来代表一个字符串;这种标识符称为宏名(macro name);

在源程序中发现该标识符时,都用该字符串替换,形成新的源程序;将标识符替换成指定字符串的过程称为宏替换(macro substitution);

宏替换的操作是在预编译时进行的;

说白了就是将一个变量强制定义为你想要的值

注意点:

1)全部用大写,以便与变量区分,帮助读者快速识别;
2)最好把所有宏定义命令放在文件的最前面;

如果需要终止宏的作用域,可以使用#undef命令;格式为: #undef 标识符


应用举例:

#define PI 3.14 就是将PI的值定义成3.14,这样在程序里看到PI就可以替换成3.14了

 

参考链接:

#define的用法详解:https://www.cnblogs.com/shmilxu/p/4837373.html

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

文件包含:

用法:

#include <包含文件名>    或    #include "包含文件名"

 

作用:

将另一个文件全部包含进来;

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

条件编译:

一般情况下,源程序中所有的语句都参加编译;但是有时候也希望根据一定的条件去编译源文件的不同部分;

有时候一个C文件会多次包含同一个头文件,就可能出现重复定义的问题;

这时候可以通过条件编译来避免重复定义(重复包含);

 

#ifndef __headerfileXXX__

#define __headerfileXXX__

  …

  文件内容

  …

#endif

#ifndef 和 #endif 要一起使用,如果丢失#endif,可能会报错。

参考链接:

#ifndef, #define, #endif 作用:https://www.cnblogs.com/challenger-vip/p/3386819.html

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

C语言中的预处理命令

标签:https   c语言程序   target   语法   编译器   字符   调试   fine   span   

原文地址:https://www.cnblogs.com/grooovvve/p/9782124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!