C和指针---预处理器

C和指针读书笔记——预处理器 原创文章,转载请注明出处:http://blog.youkuaiyun.com/yanghaoran321/article/details/7662131 1、编译一个C程序的第一个步骤就是预处理,它的主要任务是包括删除注释,插入被#include指令包含的文件的内容、定义、替换由#define指令定义的符号以及确定代码的部分内容是否应该根据一些条件编译指令进行编译; 预处理器符号: (1)__ 阅读详情

1.#define

1.1 宏
宏:允许把参数替换到文本中。所有对数值进行求值的宏定义都应该用这种方式加上括号的方式,避免在使用宏时,由于参数中的操作符或邻近的操作符之间不可预料的相互作用。

1.2 宏与函数
经常用到的比较大小的,可以定义为宏,不用函数来完成。
两个原因:用于调用和从函数返回的代码很可能比实际执行这个小型计算的工作代码更大;函数的参数必须声明为一个特定的类型,而宏是与类型无关的。
宏与函数的不同之处:
代码长度:宏每次使用时,宏代码都被插入到程序中,除非非常小的宏之外,程序的长度将大幅增长;而函数代码只出现于一个地方,每次使用这个函数时,都调用那个地方的同一份代码。
执行速度:宏更快
操作符优先级:宏参数的求值是在所有周围表达式的上下文环境里,除非他们加上括号,否则邻近操作符的优先级可能会产生不可预料的结果;函数参数只是在函数调用时求值一次,它的结果值传递给函数,表达式的求值结果更容易预测。

2.条件编译

#if
#elif
#else
#endif

C和指针 第14章 预处理器 14.2 #define 阅读详情

相关推荐

C和指针之预处理器之普通c/c++文件的编译过程

1、简单总结c/c++文件的编译3个过程 1)、预处理器进行预编译 比如我们测试这段代码 #include int main() { printf("hwllo word\n"); return 0; }主要做的事情是: (1)将所有的#define删除,并且展开所有的宏定义。说白了就是字符替换 (2)处理所有的条件编译指令,#ifdef #ifndef #end

码莎拉蒂 2589

C和指针-第十四章-预处理器

#define DESCRIPTION: 定义一个宏 NOTE: 1 所有用于表达式求值的宏定义都应该对参数加上括号,避免在使用宏时,由于参数中操作符或邻近的操作符之间不可预料的相互作用 2 宏与类型无关 USAGE1: #define name [stuff] EXPLANATION: 当符号出现在这条指令后面时, 预处理就会把它替换成stuff COMMA...

xzp_forever的博客 284

无人机散热系统设计:从材料选择到智能调控的全面解析

本文全面解析无人机散热系统设计,从材料选择到智能调控,探讨了导热界面材料、轻量化散热结构和智能调控算法的应用。通过实战案例,展示了如何在极端环境下优化散热性能,提升无人机的工作效率和可靠性。

weixin_42567279的博客 429

初探C课程系列二:指针、函数、预处理器

  接着上一篇初探C课程系列一 本章继续说 指针、函数、预处理器。   指针 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。 总结:指针是一个变量,其值为地址。   1.指针的类型   从语法的角度看,你只要把指针声明语句里的指针名...

杨的博客 314

Simplicity Studio V5与EFR32BG22蓝牙开发环境实战指南

本文详细介绍了Simplicity Studio V5集成开发环境与EFR32BG22蓝牙芯片的开发实战指南。内容涵盖开发环境安装、SDK配置、项目创建、调试烧录、外设驱动集成及常见问题解决方案,帮助开发者快速上手物联网蓝牙应用开发,并充分利用EFR32BG22的低功耗与高集成度特性。

v5w6x的博客 320

八大核心深度学习算法详解:从CNN到Transformer的完整指南

深度学习作为人工智能的核心技术,通过多层神经网络模拟人脑学习机制。其基本原理是利用反向传播算法优化网络参数,从数据中自动提取特征表示。这一技术价值在于能够处理高维复杂数据,在图像识别、自然语言处理等领域实现突破性进展。卷积神经网络(CNN)通过局部连接和权值共享有效处理图像数据,而Transformer架构基于自注意力机制革新了序列建模方式。在实际工程实践中,CNN广泛应用于计算机视觉任务,如图像分类和目标检测;Transformer则成为自然语言处理的主流架构,支撑着BERT、GPT等预训练模型。本文系统

aoe41606的博客 432

c基础-指针、函数与预处理器

指针、函数、预处理器 文章目录指针、函数、预处理器1、指针解引用指针运算数组和指针const char *, char const *, char * const,char const * const多级指针多级指针的意义2、函数函数的位置函数参数传值调用引用调用可变参数函数指针3、预处理器常用预处理器宏作业:手写sprintf 1、指针 指针是一个变量,其值为地址。 声明指针或者不再使用后都要...

yuanjinsong123的专栏 346

光伏电站发电功率预测实战:从基础物理模型到LSTM时间序列分析

本文系统介绍了光伏电站发电功率预测的实战方法,从基础的物理晴空模型到先进的LSTM时间序列分析。通过结合电工杯等竞赛中常用的代码与模型,详细阐述了如何利用历史数据和数值天气预报构建高精度预测体系,并针对阴雨天气等预测瓶颈提出了分场景建模与模型融合等优化策略,为电站运维和电网调度提供可靠的数据支持。

pp12345的博客 216

[C和指针] ch14. 预处理器

第十四章:预处理器 GitHub 链接:ch14. 预处理器 C 语言宏用的很多很多,看看 stdio.h 等各种头文件或者开源项目中的应用就懂了,各种宏定义,坑点也是蛮多的,需要学习并注意。 本章总结及注意点 部分课后习题解答 14.9 问题 以前竟然不知道…在 demo01.c 中把本章大大小小的点简单敲了敲。这 5 个宏确实蛮好用的。具体可见参考答案: 见名知意。方便修改、维护。 考查 __FILE__ 宏及 __LINE__ 的使用,以及参数转字符串的方法, 参数前加 # 即可

Y-puyu 的博客 339

Allegro负片层不显示反盘的原因和解决办法

在用Allegro做PCB设计的时候,负片设计是较为常用的一种方式,有时会出现打开负片层却看不到反盘的情况,如下图。如何才能看到反盘显示的效果,具体操作如下。负片层不显示反盘的原因和解决办法。L2层仍然只能看到盘。

weixin_54787054的博客 2160

项目管理知识体系(PMBOK)中的质量规划详解

你是否遇到过这些场景?软件上线后用户投诉“功能漏洞多”,团队连夜返工;装修完的房子墙面开裂,施工方和业主互相推诿;新研发的手机电池续航不达标,被迫延迟发布。这些问题的根源,往往是项目启动时没有做好质量规划。本文聚焦PMBOK中“质量规划”(Plan Quality Management)过程,覆盖其核心概念、操作步骤、工具技术与实战应用,适用于IT、建筑、制造等各类项目场景。

项目管理的博客 1118

《c和指针》第14章 预处理器

在编译时,可以通过命令行参数定义宏。例如,在Linux系统下使用gcc在main.c中就可以使用DEBUG#endifreturn 0;这样通过命令行开关可以方便地控制代码的调试输出。#ifdef#ifndef#endif指令用于检查某个宏是否被定义。#ifdef:如果指定的宏已被定义,则编译后续代码块,直到遇到#endif。例如:#endif#ifndef:与#ifdef相反,如果指定的宏未被定义,则编译后续代码块。例如:#endif和#if!defined()

qq_40844444的博客 750

黑猫带你学eMMC协议第1篇:全网最全emmc协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

黑猫带你学eMMC协议第7篇:全网最全emmc写保护详解(write protect) 黑猫带你学eMMC协议第8篇:emmc可靠写详解(Write Reliability) 黑猫带你学eMMC协议第9篇:emmc的分区配置(partitioning) 黑猫带你学eMMC协议第10篇:eMMC命令队列详解(CMDQ) 黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim…) 黑猫带你学eMMC协议第12篇:

黑猫奥利奥的博客 2万+

【C】【笔记】《C和指针》第10章 结构和联合 第11章 动态内存分配 第12章 使用结构和指针 第13章 高级指针话题 第14章预处理器

结构和数组都属于聚合数据类型aggregate data type。 结构是一些值的集合,这些值称为它的成员。 结构并不是一个它自身成员的数组。和数组名不同,当一个结构变量在表达式中使用时,它并不被替换成一个指针。结构变量也无法使用下表来选择特定的成员。 结构变量属于标量类型,所以可以向对待其他标量类型那样执行相同类型的操作。结构也可以作为传递给函数的参数,它们也可以

在咖啡里溺水的鱼 738

【网络安全】SSRF漏洞讲解

SSRF漏洞讲解一、初识SSRF漏洞1.定义2.产生原理3.会导致的危害4.常见产生SSRF的地方5.常见缺失函数二、SSRF漏洞利用1.函数(1) file_get_contents(2)fsockopen()(3) curl_exec()2.协议(1)file协议(2)http协议(3)dict协议(4)gopher协议三、绕过1.绕过方式(1)检查IP是否为内网IP(2)Host获取与DNS绕过(3)通过各种协议(4)利用URL解析器滥用问题四、修复修复方案五、小结 一、初识SSRF漏洞 1.定义

你在看屏幕的同时,屏幕也在注视着你 3181

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【C和指针第14章】预处理器

预处理器

小原的博客 227

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C和指针--预处理器

编译一个C程序的第1个步骤是预处理(preprocessing)阶段。C预处理器在源代码编译之前对其进行一些文本性质的操作。它的主要任务包括删除注释、插入被#include指令包含的文件的内容、定义和替换由#define指令定义的符合以及确定代码的部分内容是否应该根据一些条件编译指令进行编译。 1. #define 用法: #define name stuff 有了这条指令以后,每当有符合...

weixin_30810239的博客 93

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C和指针(十)预处理器

预处理器

mei_true的博客 352

C和指针14章 预处理器笔记

1.#define #define name stuff 当有name出现时,预处理器就会把它替换成stuff 当stuff非常长的时候,可以分成好几行,除了最后一行外,每行都要加上一个反斜杠 #define DEBUG_PRINT printf( "file %s  line %d :\

sinat_39806420的博客 239

《C和指针》第14章 预处理器

14.2.1 宏 #define包括一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)。 #define SQUARE(x) x * x 则程序中的SQUARE(5)会被替换成:5 * 5 警告: 例1:      a = 5;      printf("%d\n", SQUARE(a + 1)); 会被替换成5 + 1 * 5 + 1,

西代零零发 1987

C和指针 第14章 预处理器 14.9 问题

C和指针 第14章 预处理器 14.9 问题

weixin_客子光阴的博客 200

C和指针(学习笔记)_第14章 预处理器

C预处理器在源代码编译之前对其进行一些文本性质的操作。它的主要任务包括删除注释、插入被#include指令包含的文件的内容、定义和替换由#define指令定义的符号以及确定代码的部分内容是否应该根据一些条件编译指令进行编译。 1.预定义符号 预处理器定义的符号,它们的值或者是字符串常量,或者是十进制数字常量。__FILE__和__LINE__在确认调试输出的来源方面很有用处,__DATE__和__TIME__常常用于在被编译的程序中加入版本信息,__STDC用于哪些在ANS...

溯源守拙的博客 485

C和指针(第14章---预处理器)

程序编写,编译第一步就是宏的声明,也称预处理器阶段,在编译之前,有删除注释,插入被#include指令包含的文件的内容、和#define所替换的符号等。 14.1 五种预处理符号 __FILE__     ''name.c''               进行编译的源文件名      __LINE__         25                     文件当前的行号 __DAT...

Wu_ye123的博客 288

C和指针读书笔记-第14章(预处理器)

1.C预处理器在源代码编译之前对其进行一些文本性操作。它的主要任务包括删除注释、插入被#include指令包含的文件的内容、定义和替换由#define指令定义的符号以及确定代码的部分内容是否应该根据一些条件编译指令进行编译。 2.#define机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏或者定义宏。 3.所有用于对数值表达式求值的宏定义都应该用这种方式加上括号,避免在使用宏时

欢迎来到饭没了吃的博客 449

C和指针 (pointers on C)——第十四章:预处理器

第十四章 预处理器 我略过了高级指针话题那一章。太多的小技巧和太多的学术性探讨并不适合现在的我。不过我确实是读了,很多地方没有读懂,如果谁读了私下可以交流一下。有的小技巧还是非常有意思。 预处理器这一章的内容,大家肯定都用过,什么#include,#define #ifdef #undef这些,但是绝对用的不多。作为全面了解学C,还是应该都看一看。 预处理器用法很讲究,用不好会失误,

622

读书:C和指针14章-预处理器

写好了一段C程序,然后就是 调用编译器进行编译,运行。这背后到底发生些什么呢? 首先,第一步就是预处理器对源程序文件进行预处理。然后把修改好的程序传给编译器进行编译。 所谓的预处理过程,把源程序看做文件的话,就是进行些文本操作。 无非就是做5个操作: 1 )程序中,有没有出现预定义的那几个符号? 2)程序中,有没有出现 #define字眼? 3)程序中,有没有出现#include字眼?

steady_pace的专栏 437
上一篇: C和指针---高级指针
下一篇: C和指针---输入/输出函数
ldxFashion
博客等级 码龄6年 0粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值