强化C【C语言笔记】——预处理

预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作

预处理是C语言的一个重要功能,它由预处理程序负责完成;当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译

C语言提供了多种预处理功能,如宏定义、文件包含、条件编译

宏定义

无参宏定义

其定义的一般形式为:

    #define  标识符  字符串

对源程序作编译时,将先由预处理程序进行宏代换,然后再进行编译

对于宏定义还要说明以下几点:

  • 宏定义是用宏名来表示一个字符串
  • 宏定义不是说明或语句,在行末不必加分号
  • 宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束
  • 宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换
  • 宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名
  • 可用宏定义表示数据类型,使书写方便

带参宏定义

带参宏定义的一般形式为:

    #define  宏名(形参表)  字符串

带参宏调用的一般形式为:

    宏名(实参表); 

带参的宏定义有以下问题需要说明

  • 带参宏定义中,宏名和形参表之间不能有空格出现
  • 形式参数不分配内存单元,因此不必作类型定义
  • 在宏定义中的形参是标识符,而宏调用中的实参可以是表达式
  • 在宏定义中,字符串内的形参通常要用括号括起来以避免出错
  • 宏定义也可用来定义多个语句,在宏调用时,把这些语句又代换到源程序内

文件包含

文件包含命令行的一般形式为:

    #include”文件名”

  • 包含命令中的文件名可以用双引号括起来

使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找;

使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。用户编程时可根据自己文件所在的目录来选择某一种命令形式

  • 一个include命令只能指定一个被包含文件
  • 文件包含允许嵌套、

条件编译

  • 第一种形式
#ifdef  标识符
  程序段1
#else
  程序段2
#endif
  • 第二种形式
#ifndef 标识符  
    程序段1 
#else  
    程序段2  
#endif
  • 第三种方式
#if 常量表达式
    程序段1
#else  
    程序段2
#endif

如果您觉得这篇文章不错,且手里较为宽裕,可以支持一下博主,一分也是缘分😊
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇