嵌入式之家

 找回密码
 现在注册

QQ登录

只需一步,快速开始

搜索
热搜: ARM cortex
查看: 2928|回复: 4

C预处理器

[复制链接]

该用户从未签到

55

主题

168

帖子

1767

积分

金牌会员

Rank: 6Rank: 6

积分
1767
发表于 2015-11-16 09:05:24 | 显示全部楼层 |阅读模式
C语言预处理器提供了一些语言功能。从概念上讲,预处理器总是编译过程中单独执行的第一个步骤。两个最常用的预处理器的指令就是:#include指令(用于在编译期间把指定文件的内容包含进当前文件中)和#define指令(用任意字符序列替代一个标记)。
1、文件包含
  文件包含指令(即#include指令)使得处理大量的#define指令以及声明更加方便。在源文件中,任何形如:
#include  “文件名”    或者   #include <文件名>
的行都将被替换为由文件名指定的文件的内容。
源文件的开始处通常都会有多个#include指令,它们用以包含常见的#define语句和extern声明,或从头文件中访问库函数的函数原型声明,比如<stdio.h>。
2、宏替换
  宏定义的形式如下:
        #define  名字  替换文本
这是一种最简单的宏替换——后续所有出现名字记号的地方都将被替换为替换文本。通常情况下,#define指令占一行,替换文本是#define指令行末尾的所有剩余部分,但也可以把一个较长的宏定义分成若干行,这时需要在待续的行末尾加上一个反斜杠\。#define指令定义的名字的作用域从其定义点开始,到被编译的源文件的末尾处结束。宏定义中也可以使用前面出现的宏定义。替换只对记号进行,对括在引号中的字符串不起作用。
3、条件包含
  还可以使用条件语句对预处理本身进行控制,这种条件语句的值是在预处理执行的过程中进行计算。这种方式为在编译过程中根据计算所得的条件值选择性的包含不同代码提供了一种手段。
  C语言专门定义了两个预处理语句#ifdef与#ifndef,他它们用来测试某个名字是否已经定义。
回复

使用道具 举报

该用户从未签到

55

主题

168

帖子

1767

积分

金牌会员

Rank: 6Rank: 6

积分
1767
 楼主| 发表于 2015-11-16 09:07:24 | 显示全部楼层
{:soso_e195:}
回复 支持 反对

使用道具 举报

该用户从未签到

33

主题

97

帖子

885

积分

高级会员

Rank: 4

积分
885
发表于 2015-11-16 10:44:41 | 显示全部楼层
{:soso_e179:}
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 22:00
  • 签到天数: 1 天

    [LV.1]初来乍到

    101

    主题

    192

    帖子

    1645

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    1645
    发表于 2015-11-25 08:34:03 | 显示全部楼层
    格式比较乱,不容易阅读
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    39

    主题

    91

    帖子

    1089

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    1089
    发表于 2015-11-26 13:49:21 | 显示全部楼层
    {:soso_e163:}
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 现在注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|嵌入式之家 ( 京ICP备14038168号-1 )

    GMT+8, 2025-5-1 19:17 , Processed in 0.027591 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表