zoukankan      html  css  js  c++  java
  • C语言的预处理命令

      C语言编译器处理时经过的第一个步骤是预处理,就是从.c文件处理为.i文件。在预处理时编译器做了一些展开替换的处理。

      1>头文件展开,即将#include "stdio.h"类似的文件展开。

      2>宏定义的替换工作,即将程序中的宏定义内容替换好。

    #include"stdio.h"
    #define R 10
    int main()
    {
    	int a = R;
    }
    

      经过预处理之后代码变为

    //...stdio.h里的内容未展示
    //宏定义的地方已经替换到程序中
    int main()
    {
    	int a = 10;
        return 0; }

      宏定义做的替换是整体替换,和语法无关,它不遵循语法规则。

      宏定义一般两种用法,一种是定义一种常量,另一种是定义一个宏函数

    #define N(n,m) n+m//宏定义
    int main()
    {
             int c;
             c = N(1,2);//对1和2相加 
          return 0; }

      其实经过预处理之后变为

    int main()
    {
    	int c;
    	c = 1 + 2;
         return 0; }

      另一种应用宏函数,因为宏定义不会考虑语法,它只是作整体代换,所以可以写出不考虑变量类型的函数,这一点是他的优点

      举例说明,如下代码:

    #define N(n,m) n+m//宏定义
    int main()
    {
    	int e = N(10,20) * N(10,20)//预处理之后是int e = 10 + 20 * 10 + 20;
    //上面容易算错误!!
    	return 0;
    }
    

      3>条件编译:有些语句希望在条件满足时才编译。

    #ifdef 标识符
      //程序段1
    #else
      //程序段2
    #endif
    

      当标识符已经定义时,程序段1才参加编译

      在其使用时和define一样也是做了一个替换工作。
     
    对C语言有了一定认识。。。看Linux C语言视频学的。
  • 相关阅读:
    MKMapVIew学习系列2 在地图上绘制出你运行的轨迹
    WPF SDK研究 Intro(6) WordGame1
    WPF SDK研究 Intro(3) QuickStart3
    WPF SDK研究 Layout(1) Grid
    WPF SDK研究 目录 前言
    WPF SDK研究 Intro(7) WordGame2
    WPF SDK研究 Layout(2) GridComplex
    对vs2005创建的WPF模板分析
    WPF SDK研究 Intro(4) QuickStart4
    《Programming WPF》翻译 第6章 资源
  • 原文地址:https://www.cnblogs.com/flyingjun/p/4767981.html
Copyright © 2011-2022 走看看