当前位置: 首页 > article >正文

C语言-预处理

1.编程:
人类语言 --->编程语言(C语言)---汇编语言--->机器语言(01010)

编译过程:预处理   编译  汇编  链接 

2.预处理

预处理:1.宏定义 2.文件包含 3.条件编译 

(1)宏定义  --- 定义了符号常量 

 #define 标识符 字符串
 #define 宏名  宏值
 #define N  100
 表示,定义了一个宏 (符号),而这个符号 代表的值 就是100 
 
 #define 宏名(参数)  宏值
 
说明:
  1. 预处理阶段,只做文本原样替换
  2. 宏 就是用 宏值 将 宏名 原样替换 
  3. 用途 
     当作常量来用
     好处,可以做到 一改全改,方便操作 
  4. 宏名 
     符合标识符命名规则
     宏名,一般都是大写 --- 主要是为了和普通变量名区分 
  5. 程序中 处于 ""中的 宏名 不会被替换 
  6. 宏名 不要和关键字重名
  7. 宏替换过程中,存在宏的副作用 ---- 文本的原样替换 
     处理:
         能加括号的尽量都加括号
  8. 宏定义 只能放在一行 

练习:
   从键盘输入 圆的半径,求出圆的周长和面积 
   L = 2 * π * r 
   S = π * r * r

(2)文件包含 
#include "文件名"   //首先在当前路径下寻找要包含的文件,找不到再到系统默认路径下寻找
#include <文件名>   //默认到系统指定路径下寻找头文件 

作用:
   将文件名代表的文件中的内容 ,替换到当前文件 

条件编译: //也是文本替换 --- 符合条件的文本 
//形式1
#ifdef 标识符
    程序段1
#else
    程序段2
#endif


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


#ifndef 标识符
    程序段1
#else
    程序段2
#endif


#if    表达式
    程序段1
#else
    程序段2
#endif

(3)多文件编程 
 main.c
  |--add.c  //自己的点c通常会包含自己的点h 
  |--add.h  //一部分是 对外的函数声明 一部分时自己的点c需要用到的头文件等内容 
  |--sub.c
  |--sub.h 


http://www.kler.cn/a/536461.html

相关文章:

  • 部署LLM模型到云端
  • Linux 内核模块 | 加载 / 添加 / 删除 / 优先级
  • 【数据结构】(6) LinkedList 链表
  • 【Leetcode 每日一题】47. 全排列 II
  • RK3576——USB3.2 OTG无法识别到USB设备
  • html的字符实体和颜色表示
  • BpmnJS源码篇1:Injector 依赖注入模式的实现
  • 一、lambda表达式处理stream操作
  • 换电脑了如何快速导出vscode里的插件
  • 【C/C++算法】从浅到深学习---双指针算法(图文兼备 + 源码详解)
  • 低成本训练的突破与争议:DeepSeek R1模型的新进展
  • (2024|Nature Medicine,生物医学 AI,BiomedGPT)面向多种生物医学任务的通用视觉-语言基础模型
  • 3.Python分支和循环:if判断语句、运算符、if-else语句、while循环、for循环、break、continue
  • nuxt3中报错: `setInterval` should not be used on the server.
  • 不定参数.
  • 2、k8s的cni网络插件和基本操作命令
  • 极客说|利用 Azure AI Agent Service 创建自定义 VS Code Chat participant
  • Codeforces Round 995 (Div. 3)
  • 使用VSCode接入DeepSeek探索
  • 封装descriptions组件,描述,灵活
  • Ansys Maxwell:磁耦合器 - 扭矩与角度分析
  • 800G光模块:引领未来数据中心与网络通信的新引擎
  • GPT-4使用次数有上限吗?一文了解使用规则
  • WPF 进度条(ProgressBar)示例一
  • 【Pandas】pandas Series skew
  • Nginx SSL: error:1410D0B 错误