C/C++预处理指令#define,#ifdef,#ifndef,#endif…

原文https://www.cnblogs.com/zi-xing/p/4550246.html
管理

C/C++预处理指令#define,#ifdef,#ifndef,#endif…

本文主要记录了C/C++预处理指令,常见的预处理指令如下:

#空指令,无任何效果
#include包含一个源代码文件
#define定义宏
#undef取消已定义的宏
#if如果给定条件为真,则编译下面代码
#ifdef如果宏已经定义,则编译下面代码
#ifndef如果宏没有定义,则编译下面代码
#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
#endif结束一个#if……#else条件编译块
#error停止编译并显示错误信息

本来只是想了解一下#ifdef,#ifndef,#endif的,没想到查出来这么多的预处理指令,上面的多数都是常见的,但是平时没有怎么注意预处理这方面的内容,所以这里梳理一下知识吧。同时有什么不妥的地方,或者遗漏了什么内容,还请留言指出。

什么是预处理指令?

预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。

以前没有在意的学者注意了,预处理指令是在编译器进行编译之前进行的操作.预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在很多编程语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码(防止重复包含某些文件)。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换。预处理过程还会删除程序中的注释和多余的空白字符。

#include包含一个源代码文件

这个预处理指令,我想是见得最多的一个,简单说一下,第一种方法是用尖括号把头文件括起来。这种格式告诉预处理程序在编译器自带的或外部库的头文件中搜索被包含的头文件。第二种方法是用双引号把头文件括起来。这种格式告诉预处理程序在当前被编译的应用程序的源代码文件中搜索被包含的头文件,如果找不到,再搜索编译器自带的头文件。采用两种不同包含格式的理由在于,编译器是安装在公共子目录下的,而被编译的应用程序是在它们自己的私有子目录下的。一个应用程序既包含编译器提供的公共头文件,也包含自定义的私有头文件。采用两种不同的包含格式使得编译器能够在很多头文件中区别出一组公共的头文件。

#define定义宏

有关#define这个宏定义,在C语言中使用的很多,因为#define存在一些不足,C++强调使用const来定义常量。宏定义了一个代表特定内容的标识符。预处理过程会把源代码中出现的宏标识符替换成宏定义时的值。记住仅仅是进行标识符的替换。下面列举一些#define的使用:

用#define实现求最大值和最小值的宏@[TOC](这里写自定义目录标题)

欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + Shift + B
斜体:Ctrl/Command + Shift + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to-HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ(n)=(n−1)!∀n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n1)!nN 是通过欧拉积分

Γ(z)=∫0∞tz−1e−tdt .\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0开始我的操作确认?结束yesno
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向制造领域人机物三元数据融合的本体自动化构建方法

面向制造领域人机物三元数据融合的本体自动化构建方法 人工智能技术与咨询 点击蓝字 关注我们 摘要 当前,智能制造面临的许多问题都具有不确定性和复杂性,单纯地利用专家经验和机理模型难以有效解决.鉴于此,面向跨层跨域的复杂制造系统网络化协同控制机制,提出一种基于本…

“中国脑计划”:向最后的前沿进发

来源:神经科技编辑:Yezi审阅:mingzlee7大脑是人类智慧的集结,是已知宇宙当中最复杂的产物,但我们对大脑认知却很晚,比如我们常说心想事成、心外无物,在很长的历史时期当中,我们都以为…

基于人机协作的无人集群搜索方法研究

基于人机协作的无人集群搜索方法研究 人工智能技术与咨询 点击蓝字 关注我们 关键词: 无人集群 ; 人机协作 ; 动态规划 ; 多Agent系统 摘要: 人与机器人交互是当前一项研究热点,人与无人集群协作搜索是人机交互的典型场景,通过结…

chatbot1_2 RNN简单实现

chatbot1.2 如何处理多义词的embedding? 每个意思一个向量,多方叠加。在某个切面与其相同意思的向量相近 如何识别和学习词组的向量? 多次出现在一起,认为是词组 如何处理未曾见过的新词? 语境平均,语…

DeepMind创始人Demis Hassabis:AI 的强大,超乎我们的想象

来源:微信公众号“雷锋网”撰文:黄楠、王玥编辑:陈彩娴有人认为 AI 已经穷途末路,但一些绝顶聪明的人还在继续求索。近日,DeepMind 的创始人 Demis Hassabis 作客 Lex Fridman 的播客节目,谈了许多有趣的观…

组网雷达融合处理组件化设计与仿真

人工智能技术与咨询 点击蓝色 关注我们 关键词: 组网雷达 ; 点迹融合 ; 航迹融合 ; 组件化设计 ; 仿真 摘要 数据融合处理是多雷达组网的核心。以典型防空雷达网为参考对象,采用组件化设计方式,将组网数据融合处理过程划分为不同的组件&…

chatbot2 RNN语言模型

基于RNN的语言模型 RNN语言模型理论基础 参考文献 cbow/skip gram 的局限性#### 解决方案 rnn模型细节 数学表示 一个输入一个输出的不是循环神经网络。 RNN语言模型实践 demo1 1A. 优化上一节课的RNN模型 在第一个版本里面,我们将上一节课的代码包装为Class&…

脑机接口:人工智能下一站?

来源:《光明日报》 作者:杨义先、钮心忻,北京邮电大学教授 随着人工智能的发展,脑机接口也逐渐从科幻走进现实。有人希望以此造就“超人”,更多的人则希望能够解决实际问题——让盲人复明、让瘫痪在床的患者重新走路…

仅活了 5 年!谷歌官宣停掉 IoT Core 服务:“现有连接将被关闭”

来源:AI前线整理:冬梅谷歌云 IoT Core 服务推出 5 年后“退役”近日,据外媒报道,谷歌宣布自 2023 年 8 月起,将关闭其物联网(IoT Core)服务,此次官宣 IoT Core 的退役,也…

tensorflow1、2会话、变量、feed、fetch、最小二乘法

第一节课 tensorboard–可以查看训练效果 安装ananconda(略) tensorflow简介 tensorflow结构 是个数据流动的趋势, graph1:默认图 graph2:W*xb->ReLU 2-1 基本计算-会话的使用 import tensorflow as tf # 创建一个常量op,1*…

《Nature》十年努力,“合成”胚胎与大脑和跳动的心脏

来源:生物通研究人员已经用小鼠干细胞创造出了模型胚胎,这些干细胞形成了大脑、跳动的心脏和身体所有其他器官的基础——这是重建生命第一阶段的新途径。小鼠胚胎的小脑由Magdalena Zernicka-Goetz教授领导的研究小组在没有卵子或精子的情况下开发了胚胎…

tensorflow3 非线性回归、mnist、简单神经网络

mnist数据集 手写数字的数据集。60000行训练数据集,10000行测试数据集下载地址:http://yann.lecun.com/exdb/mnist/index.html mnist数据集是形状为[60000,784]的张量,60000张图片,每个图片有784个像素点,这些个像素点…

【院士思维】张钹:我们正处在AI算法不可控的危险状态

来源:清华大学人工智能国际治理研究院8月19日,2022世界机器人大会主论坛正式开幕,期间,有三位院士到场,就“未来机器人:目标、路径和挑战”的主题进行了一场深刻的谈话。三位院士分别为中国科学院院士&…

tensorflow4 代价函数、dropout、优化器

这次扔使用上次的mnist数据集分类的简单版本程序,使用不同的代价函数做计算 二次代价函数 激活函数 使用二次代价函数的运行结果 # 使用二次代价函数的结果-精度 # losstf.reduce_mean(tf.square(y-prediction)) # 0.8322 # 0.8698 # 0.8818 # 0.8882 # 0.8935 #…

强化学习先驱Richard Sutton:将开发新型计算智能体

来源:机器之心编辑:陈萍、小舟DeepMind 和阿尔伯塔大学联合成立的人工智能实验室未来几年要研究什么?2017 年,DeepMind 在加拿大的 Edmonton 成立了其首个英国之外的人工智能研究实验室,并和阿尔伯塔大学大学紧密合作&…

不隐身的“隐身战斗机”

7月19日,韩国KF-21战斗机原型机完成首飞,韩国国防部将该机定位为4代半战斗机。凭借该机,韩国将成为第9个能够研制超音速战斗机的国家。 所谓4代半战斗机,即部分采用隐身技术,同时无法完全达到5代机性能标准的战斗机。…

国科大高级人工智能笔记1-搜索

1.搜索问题 搜索问题——对原问题的建模 构成: 状态空间 包含环境中每一个细节搜索状态:只保留行动需要的细节 后继函数 行动,消耗 初始状态和目标测试 解: 一个行动序列,将初始状态–>目标状态 表示 状态空间图 搜…

自学成才的人工智能显示出与大脑工作方式的相似之处

来源:ScienceAI编译:白菜叶十年来,许多最令人印象深刻的人工智能系统都是使用大量标记数据进行教学的。例如,可以将图像标记为「虎斑猫」或「虎猫」,以「训练」人工神经网络以正确区分虎斑和虎。该战略既取得了惊人的成…

国科大高级人工智能2-人工神经网络(MLP、Hopfield)

常见组合函数 常见激活函数 结构 前馈神经网络(单向)反馈/循环神经网络 学习方法 学习模型 增量迭代 类型 监督无监督 学习策略 Hebbrian Learning 若两端的神经元同时激活,增强联接权重Unsupervised Learning循环?ωij(t1)ω…

Nature:AI的瓶颈突破在于「实体人工智能(PAI)」

来源:公众号机器之能作者:AslanMiriyev 、 Mirko Kovač翻译:Panda近些年人工智能领域已经取得了突飞猛进的进步,但这些进步大都集中于数字人工智能领域,对于能和我们这种生物体一样执行日常任务的实体人工智能&#x…