黑马程序员技术交流社区

标题: c的预处理为什么我听着有点晕呢。有没有大神来指教一下 [打印本页]

作者: 小月格子猫    时间: 2014-9-11 20:49
标题: c的预处理为什么我听着有点晕呢。有没有大神来指教一下
预处理,和条件判断,大家能不能说一些注意点什么的
作者: 王绍明    时间: 2014-9-14 16:22
这不是重点 老师也只是大体的一讲 。
作者: zzyy3321    时间: 2014-9-14 17:58
以前保存的总结信息 很有用

预处理功能主要包括宏定义,文件包含,条件编译三部分。分别对应宏定义命令,文件包含命令,条件编译命令三部分实现。

  预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换。预处理过程还会删除程序中的注释和多余的空白字符。

预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。
  
 
   指令             用途

         #            空指令,无任何效果

         #include    包含一个源代码文件

         #define     定义宏

         #undef     取消已定义的宏

         #if          如果给定条件为真,则编译下面代码

         #ifdef       如果宏已经定义,则编译下面代码

         #ifndef     如果宏没有定义,则编译下面代码

         #elif         如果前面的#if给定条件不为真,当前条件为真,则编译下面代码

         #endif      结束一个#if……#else条件编译块

         #error      停止编译并显示错误信息

    #else       略

   #error     指令将使编译器显示一条错误信息,然后停止编译。

         #line        指令可以改变编译器用来指出警告和错误信息的文件号和行号。
         #pragma  指令没有正式的定义。编译器可以自定义其用途。典型的用法是禁止或允许某些烦人的警告信息。

文件包含
  
  在程序中包含头文件有两种格式:
        #include <my.h>
        #include "my.h"
l第一种方法是用尖括号把头文件括起来。这种格式告诉预处理程序在编译器自带的或外部库的头文件中搜索被包含的头文件。第二种方法是用双引号把头文件括起来。这种格式告诉预处理程序在当前被编译的应用程序的源代码文件中搜索被包含的头文件,如果找不到,再搜索编译器自带的头文件。
    采用两种不同包含格式的理由在于,编译器是安装在公共子目录下的,而被编译的应用程序是在它们自己的私有子目录下的。一个应用程序既包含编译器提供的公共头文件,也包含自定义的私有头文件。采用两种不同的包含格式使得编译器能够在很多头文件中区别出一组公共的头文件。     
作者: 庄得超    时间: 2014-9-14 20:27
学习了。。。
作者: 明天过后1    时间: 2014-9-14 22:32
3楼说的不错,学习了
作者: 超越自己    时间: 2014-9-15 07:31
解释的很详细
作者: 陨石    时间: 2014-9-15 09:53
顶楼上。
作者: 我说你是个逗比    时间: 2014-9-15 23:52
宏定义是指系统在编译之前先把定义的变量替换(只是单纯的替换,不负责运算)

条件编译:一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件

文件包含:是预处理的一个重要功能,它可用来把多个源文件连接成一个源文件进行编译,结果将生成一个目标文件




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2