zoukankan      html  css  js  c++  java
  • 预处理#

    一、预编译

      预编译又称预处理,是整个编译过程中最先做的工作,主要是做代码文本的替换工作。主要处理#开头的指令,如拷贝#include包含头文件中的内容,替换#define定义的宏,条件编译#if等。

    二、#和##的作用

      #和##都是运算符。#是把宏参数转化为字符串的运算符,##是把两个宏参数连接的字符串。

    例1:

    #include <stdio.h>
    #define STR(arg) #arg
    #define STR2(arg) arg

    void main()
    {
    printf("STR result:%s ",STR("OK"));
    printf("STR result:%s ",STR(OK));
    printf("STR2 result:%s ",STR2("OK"));
    }

    结果:

    STR result:"OK"
    STR result:OK
    STR2 result:OK

    例2:

    #include <stdio.h>
    #define ADL(a,b) (a##b)

    void main()
    {
    printf("ADL result:%d ",ADL(2,3));
    }

    结果:

    ADL result:23

    三、避免文件头被重复

    1、使用条件编译

    #ifndef _TE_H

    #define _TE_H

    ......

    #endif

    例:(错误)

    /////////////////////////////////////////////////////////////////////////////////////////////////////

    te.c:

    #include <stdio.h>
    #include "te.h"
    #include "te.h"

    extern int i;

    void main()
    {
    printf("%d ",i);
    }

    te.h:

    int i=3;

    结果:

    te.h:1: error: redefinition of 'i'
    te.h:1: note: previous definition of 'i' was here

    /////////////////////////////////////////////////////////////////////////////////////////////////////

    2、使用#pragma once

    例:(正确)

    /////////////////////////////////////////////////////////////////////////////////////////////////////

    te.c:

    #include <stdio.h>
    #include "te.h"
    #include "te.h"

    extern int i;

    void main()
    {
    printf("%d ",i);
    }

    te.h:

    #pragma once

    int i=3;

    结果:

    3

    /////////////////////////////////////////////////////////////////////////////////////////////////////

  • 相关阅读:
    netstat
    Android总结篇——Intent机制详解及示例总结
    Android系统介绍与框架
    三个绘图工具类详解
    Android 调用 WebService
    Android JSON数据解析
    Android 总结:ContentProvider 的使用
    Android Service完全解析,关于服务你所需知道的一切(下)
    Android Service完全解析,关于服务你所需知道的一切(上)
    Activity的四种加载模式详解:
  • 原文地址:https://www.cnblogs.com/Mr-Wenyan/p/7235309.html
Copyright © 2011-2022 走看看